Ignore:
Timestamp:
12/12/17 16:32:35 (22 months ago)
Author:
pfleck
Message:

#2809: merged branch to trunk

Location:
trunk/sources/HeuristicLab.DataPreprocessing.Views
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.DataPreprocessing.Views

  • trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/CheckedTransformationListView.cs

    r15110 r15518  
    5151          // TODO: Avoid accessing parent view
    5252          var transformationView = (TransformationView)Parent;
    53           var columnNames = transformationView.Content.Data.VariableNames;
     53          var columnNames = transformationView.Content.PreprocessingData.VariableNames;
    5454
    5555          return (ITransformation)typeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType(new[] { columnNames });
  • trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/DataCompletenessView.cs

    r15110 r15518  
    5252
    5353    private void InitData() {
    54       IDictionary<int, IList<int>> missingValueIndices = Content.SearchLogic.GetMissingValueIndices();
    55 
    56       bool[,] valueMissing = new bool[Content.SearchLogic.Rows, Content.SearchLogic.Columns];
    57       foreach (var columnMissingValues in missingValueIndices) {
    58         var column = columnMissingValues.Key;
    59         foreach (var missingValueIndex in columnMissingValues.Value)
    60           valueMissing[missingValueIndex, column] = true;
     54      bool[,] valueMissing = new bool[Content.PreprocessingData.Rows, Content.PreprocessingData.Columns];
     55      for (int row = 0; row < Content.PreprocessingData.Rows; row++) {
     56        for (int column = 0; column < Content.PreprocessingData.Columns; column++)
     57          valueMissing[row, column] = Content.PreprocessingData.IsCellEmpty(column, row);
    6158      }
    6259
     
    7875      //custom x axis label
    7976      double from = 0.5;
    80       foreach (String columnName in Content.SearchLogic.VariableNames) {
     77      foreach (String columnName in Content.PreprocessingData.VariableNames) {
    8178        double to = from + 1;
    8279        chart.ChartAreas[0].AxisX.CustomLabels.Add(from, to, columnName);
  • trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.Designer.cs

    r15210 r15518  
    5454      this.mostCommonToolStripMenuItem_Column = new System.Windows.Forms.ToolStripMenuItem();
    5555      this.interpolationToolStripMenuItem_Column = new System.Windows.Forms.ToolStripMenuItem();
    56       this.smoothingToolStripMenuItem_Column = new System.Windows.Forms.ToolStripMenuItem();
    5756      this.replaceValueOverSelectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
    5857      this.averageToolStripMenuItem_Selection = new System.Windows.Forms.ToolStripMenuItem();
     
    6362      this.btnReplace = new System.Windows.Forms.Button();
    6463      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
    65       this.checkInputsTargetButton = new System.Windows.Forms.Button();
    66       this.uncheckAllButton = new System.Windows.Forms.Button();
    67       this.checkAllButton = new System.Windows.Forms.Button();
     64      this.shuffleWithinPartitionsCheckBox = new System.Windows.Forms.CheckBox();
    6865      this.addRowButton = new System.Windows.Forms.Button();
    6966      this.addColumnButton = new System.Windows.Forms.Button();
    7067      this.renameColumnsButton = new System.Windows.Forms.Button();
    7168      this.showVariablesGroupBox = new System.Windows.Forms.GroupBox();
     69      this.shuffleAllButton = new System.Windows.Forms.Button();
     70      this.checkInputsTargetButton = new System.Windows.Forms.Button();
     71      this.uncheckAllButton = new System.Windows.Forms.Button();
     72      this.checkAllButton = new System.Windows.Forms.Button();
    7273      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
    7374      this.contextMenuCell.SuspendLayout();
     
    127128            this.randomToolStripMenuItem_Column,
    128129            this.mostCommonToolStripMenuItem_Column,
    129             this.interpolationToolStripMenuItem_Column,
    130             this.smoothingToolStripMenuItem_Column});
     130            this.interpolationToolStripMenuItem_Column});
    131131      this.replaceValueOverColumnToolStripMenuItem.Name = "replaceValueOverColumnToolStripMenuItem";
    132132      this.replaceValueOverColumnToolStripMenuItem.Size = new System.Drawing.Size(223, 22);
     
    167167      this.interpolationToolStripMenuItem_Column.Text = "Interpolation";
    168168      this.interpolationToolStripMenuItem_Column.Click += new System.EventHandler(this.ReplaceWithInterpolation_Column_Click);
    169       //
    170       // smoothingToolStripMenuItem_Column
    171       //
    172       this.smoothingToolStripMenuItem_Column.Name = "smoothingToolStripMenuItem_Column";
    173       this.smoothingToolStripMenuItem_Column.Size = new System.Drawing.Size(155, 22);
    174       this.smoothingToolStripMenuItem_Column.Text = "Smoothing";
    175       this.smoothingToolStripMenuItem_Column.Click += new System.EventHandler(this.ReplaceWithSmoothing_Selection_Click);
    176169      //
    177170      // replaceValueOverSelectionToolStripMenuItem
     
    236229      this.btnReplace.Click += new System.EventHandler(this.btnReplace_Click);
    237230      //
     231      // shuffleWithinPartitionsCheckBox
     232      //
     233      this.shuffleWithinPartitionsCheckBox.AutoSize = true;
     234      this.shuffleWithinPartitionsCheckBox.Location = new System.Drawing.Point(444, 30);
     235      this.shuffleWithinPartitionsCheckBox.Name = "shuffleWithinPartitionsCheckBox";
     236      this.shuffleWithinPartitionsCheckBox.Size = new System.Drawing.Size(102, 17);
     237      this.shuffleWithinPartitionsCheckBox.TabIndex = 20;
     238      this.shuffleWithinPartitionsCheckBox.Text = "Within Partitions";
     239      this.toolTip.SetToolTip(this.shuffleWithinPartitionsCheckBox, "If checked, the Training and Test partitions are shuffled separately. Otherwise a" +
     240        "ll data is shuffled.");
     241      this.shuffleWithinPartitionsCheckBox.UseVisualStyleBackColor = true;
     242      //
     243      // addRowButton
     244      //
     245      this.addRowButton.Location = new System.Drawing.Point(338, 26);
     246      this.addRowButton.Name = "addRowButton";
     247      this.addRowButton.Size = new System.Drawing.Size(83, 23);
     248      this.addRowButton.TabIndex = 10;
     249      this.addRowButton.Text = "Add Datarow";
     250      this.addRowButton.UseVisualStyleBackColor = true;
     251      this.addRowButton.Click += new System.EventHandler(this.addRowButton_Click);
     252      //
     253      // addColumnButton
     254      //
     255      this.addColumnButton.Location = new System.Drawing.Point(338, 0);
     256      this.addColumnButton.Name = "addColumnButton";
     257      this.addColumnButton.Size = new System.Drawing.Size(83, 23);
     258      this.addColumnButton.TabIndex = 10;
     259      this.addColumnButton.Text = "Add Variable";
     260      this.addColumnButton.UseVisualStyleBackColor = true;
     261      this.addColumnButton.Click += new System.EventHandler(this.addColumnButton_Click);
     262      //
     263      // renameColumnsButton
     264      //
     265      this.renameColumnsButton.Location = new System.Drawing.Point(228, 26);
     266      this.renameColumnsButton.Name = "renameColumnsButton";
     267      this.renameColumnsButton.Size = new System.Drawing.Size(104, 23);
     268      this.renameColumnsButton.TabIndex = 11;
     269      this.renameColumnsButton.Text = "Rename Variables";
     270      this.renameColumnsButton.UseVisualStyleBackColor = true;
     271      this.renameColumnsButton.Click += new System.EventHandler(this.renameColumnsButton_Click);
     272      //
     273      // showVariablesGroupBox
     274      //
     275      this.showVariablesGroupBox.Controls.Add(this.checkInputsTargetButton);
     276      this.showVariablesGroupBox.Controls.Add(this.uncheckAllButton);
     277      this.showVariablesGroupBox.Controls.Add(this.checkAllButton);
     278      this.showVariablesGroupBox.Location = new System.Drawing.Point(564, 0);
     279      this.showVariablesGroupBox.Name = "showVariablesGroupBox";
     280      this.showVariablesGroupBox.Size = new System.Drawing.Size(97, 49);
     281      this.showVariablesGroupBox.TabIndex = 17;
     282      this.showVariablesGroupBox.TabStop = false;
     283      this.showVariablesGroupBox.Text = "Show Variables";
     284      //
     285      // shuffleAllButton
     286      //
     287      this.shuffleAllButton.Location = new System.Drawing.Point(444, 0);
     288      this.shuffleAllButton.Name = "shuffleAllButton";
     289      this.shuffleAllButton.Size = new System.Drawing.Size(102, 23);
     290      this.shuffleAllButton.TabIndex = 19;
     291      this.shuffleAllButton.Text = "Shuffle";
     292      this.shuffleAllButton.UseVisualStyleBackColor = true;
     293      this.shuffleAllButton.Click += new System.EventHandler(this.shuffleAllButton_Click);
     294      //
    238295      // checkInputsTargetButton
    239296      //
     
    269326      this.checkAllButton.Click += new System.EventHandler(this.checkAllButton_Click);
    270327      //
    271       // addRowButton
    272       //
    273       this.addRowButton.Location = new System.Drawing.Point(338, 26);
    274       this.addRowButton.Name = "addRowButton";
    275       this.addRowButton.Size = new System.Drawing.Size(83, 23);
    276       this.addRowButton.TabIndex = 10;
    277       this.addRowButton.Text = "Add Datarow";
    278       this.addRowButton.UseVisualStyleBackColor = true;
    279       this.addRowButton.Click += new System.EventHandler(this.addRowButton_Click);
    280       //
    281       // addColumnButton
    282       //
    283       this.addColumnButton.Location = new System.Drawing.Point(338, 0);
    284       this.addColumnButton.Name = "addColumnButton";
    285       this.addColumnButton.Size = new System.Drawing.Size(83, 23);
    286       this.addColumnButton.TabIndex = 10;
    287       this.addColumnButton.Text = "Add Variable";
    288       this.addColumnButton.UseVisualStyleBackColor = true;
    289       this.addColumnButton.Click += new System.EventHandler(this.addColumnButton_Click);
    290       //
    291       // renameColumnsButton
    292       //
    293       this.renameColumnsButton.Location = new System.Drawing.Point(228, 26);
    294       this.renameColumnsButton.Name = "renameColumnsButton";
    295       this.renameColumnsButton.Size = new System.Drawing.Size(104, 23);
    296       this.renameColumnsButton.TabIndex = 11;
    297       this.renameColumnsButton.Text = "Rename Variables";
    298       this.renameColumnsButton.UseVisualStyleBackColor = true;
    299       this.renameColumnsButton.Click += new System.EventHandler(this.renameColumnsButton_Click);
    300       //
    301       // showVariablesGroupBox
    302       //
    303       this.showVariablesGroupBox.Controls.Add(this.checkInputsTargetButton);
    304       this.showVariablesGroupBox.Controls.Add(this.uncheckAllButton);
    305       this.showVariablesGroupBox.Controls.Add(this.checkAllButton);
    306       this.showVariablesGroupBox.Location = new System.Drawing.Point(448, 0);
    307       this.showVariablesGroupBox.Name = "showVariablesGroupBox";
    308       this.showVariablesGroupBox.Size = new System.Drawing.Size(97, 49);
    309       this.showVariablesGroupBox.TabIndex = 17;
    310       this.showVariablesGroupBox.TabStop = false;
    311       this.showVariablesGroupBox.Text = "Show Variables";
    312       //
    313328      // DataGridContentView
    314329      //
    315330      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    316331      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
     332      this.Controls.Add(this.shuffleWithinPartitionsCheckBox);
     333      this.Controls.Add(this.shuffleAllButton);
    317334      this.Controls.Add(this.showVariablesGroupBox);
    318335      this.Controls.Add(this.renameColumnsButton);
     
    335352      this.Controls.SetChildIndex(this.columnsTextBox, 0);
    336353      this.Controls.SetChildIndex(this.showVariablesGroupBox, 0);
     354      this.Controls.SetChildIndex(this.shuffleAllButton, 0);
     355      this.Controls.SetChildIndex(this.shuffleWithinPartitionsCheckBox, 0);
    337356      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
    338357      this.contextMenuCell.ResumeLayout(false);
     
    361380    private System.Windows.Forms.Button btnReplace;
    362381    private System.Windows.Forms.ToolTip toolTip;
    363     private System.Windows.Forms.ToolStripMenuItem smoothingToolStripMenuItem_Column;
    364382    private System.Windows.Forms.Button addRowButton;
    365383    private System.Windows.Forms.Button addColumnButton;
     
    369387    private System.Windows.Forms.Button uncheckAllButton;
    370388    private System.Windows.Forms.Button checkAllButton;
     389    private System.Windows.Forms.Button shuffleAllButton;
     390    private System.Windows.Forms.CheckBox shuffleWithinPartitionsCheckBox;
    371391  }
    372392}
  • trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.cs

    r15110 r15518  
    8585      base.RegisterContentEvents();
    8686      Content.Changed += Content_Changed;
    87       Content.FilterLogic.FilterChanged += FilterLogic_FilterChanged;
     87      Content.PreprocessingData.FilterChanged += FilterLogic_FilterChanged;
    8888    }
    8989
     
    9191      base.DeregisterContentEvents();
    9292      Content.Changed -= Content_Changed;
    93       Content.FilterLogic.FilterChanged -= FilterLogic_FilterChanged;
     93      Content.PreprocessingData.FilterChanged -= FilterLogic_FilterChanged;
    9494    }
    9595
     
    9898      searchIterator = null;
    9999      if (findAndReplaceDialog != null && !findAndReplaceDialog.IsDisposed) {
    100         if (Content.FilterLogic.IsFiltered) {
     100        if (Content.PreprocessingData.IsFiltered) {
    101101          findAndReplaceDialog.DisableReplace();
    102102        } else {
     
    104104        }
    105105      }
    106       btnReplace.Enabled = !Content.FilterLogic.IsFiltered;
     106      btnReplace.Enabled = !Content.PreprocessingData.IsFiltered;
    107107    }
    108108
     
    126126      string errorMessage;
    127127      if (!String.IsNullOrEmpty(e.FormattedValue.ToString())) {
    128         if (dataGridView.IsCurrentCellInEditMode && Content.FilterLogic.IsFiltered) {
     128        if (dataGridView.IsCurrentCellInEditMode && Content.PreprocessingData.IsFiltered) {
    129129          errorMessage = "A filter is active, you cannot modify data. Press ESC to exit edit mode.";
    130130        } else {
     
    167167
    168168      ReplaceTransaction(() => {
    169         Content.PreProcessingData.InTransaction(() => {
     169        Content.PreprocessingData.InTransaction(() => {
    170170          for (int row = containsHeader ? 1 : 0; row < values.GetLength(1); row++) {
    171171            for (int col = 0; col < values.GetLength(0); col++) {
     
    177177              if (string.IsNullOrWhiteSpace(firstRow[i]))
    178178                firstRow[i] = string.Format("<{0}>", i);
    179             Content.PreProcessingData.RenameColumns(firstRow);
     179            Content.PreprocessingData.RenameColumns(firstRow);
    180180          }
    181181        });
     
    224224      if (e.Button == MouseButtons.Middle) {
    225225        int newIndex = e.ColumnIndex >= 0 ? e.ColumnIndex : 0;
    226         Content.PreProcessingData.InsertColumn<double>(newIndex.ToString(), newIndex);
     226        Content.PreprocessingData.InsertColumn<double>(newIndex.ToString(), newIndex);
    227227      } else if (e.Button == MouseButtons.Right && Content.SortableView) {
    228228        SortColumn(e.ColumnIndex);
     
    235235        if (e.Button == MouseButtons.Middle) {
    236236          int newIndex = e.RowIndex >= 0 ? e.RowIndex : 0;
    237           Content.PreProcessingData.InsertRow(newIndex);
     237          Content.PreprocessingData.InsertRow(newIndex);
    238238        }
    239239      }
     
    248248    }
    249249
    250     private void btnApplySort_Click(object sender, System.EventArgs e) {
    251       Content.ManipulationLogic.ReOrderToIndices(virtualRowIndices);
     250    private void btnApplySort_Click(object sender, EventArgs e) {
     251      Content.ReOrderToIndices(virtualRowIndices);
    252252      OnContentChanged();
    253253    }
     
    271271        searchIterator = null;
    272272        DataGridView.SelectionChanged += DataGridView_SelectionChanged_FindAndReplace;
    273         if (Content.FilterLogic.IsFiltered) {
     273        if (Content.PreprocessingData.IsFiltered) {
    274274          findAndReplaceDialog.DisableReplace();
    275275        }
     
    405405      ComparisonOperation comparisonOperation = findAndReplaceDialog.GetComparisonOperation();
    406406      var foundCells = new Dictionary<int, IList<int>>();
    407       for (int i = 0; i < Content.FilterLogic.PreprocessingData.Columns; i++) {
     407      for (int i = 0; i < Content.PreprocessingData.Columns; i++) {
    408408        var filters = CreateFilters(match, comparisonOperation, i);
    409409
    410         bool[] filteredRows = Content.FilterLogic.GetFilterResult(filters, true);
     410        bool[] filteredRows = GetFilterResult(filters, true);
    411411        var foundIndices = new List<int>();
    412412        for (int idx = 0; idx < filteredRows.Length; ++idx) {
     
    427427    }
    428428
     429    private bool[] GetFilterResult(IList<IFilter> filters, bool isAndCombination) {
     430      IList<IFilter> activeFilters = filters.Where(f => f.Active && f.ConstraintData != null).ToList();
     431
     432      if (activeFilters.Count == 0) {
     433        return Enumerable.Repeat(false, Content.PreprocessingData.Rows).ToArray(); ;
     434      }
     435
     436      var result = Enumerable.Repeat(!isAndCombination, Content.PreprocessingData.Rows).ToArray();
     437      foreach (IFilter filter in activeFilters) {
     438        bool[] filterResult = filter.Check();
     439        for (int row = 0; row < result.Length; ++row) {
     440          result[row] = isAndCombination ? result[row] || filterResult[row] : result[row] && filterResult[row];
     441        }
     442      }
     443      return result;
     444    }
     445
    429446    private List<IFilter> CreateFilters(string match, ComparisonOperation comparisonOperation, int columnIndex) {
    430       IPreprocessingData preprocessingData = Content.FilterLogic.PreprocessingData;
     447      IPreprocessingData preprocessingData = Content.PreprocessingData;
    431448      IStringConvertibleValue value;
    432449      if (preprocessingData.VariableHasType<double>(columnIndex)) {
     
    473490          switch (findAndReplaceDialog.GetReplaceAction()) {
    474491            case ReplaceAction.Value:
    475               Content.ManipulationLogic.ReplaceIndicesByValue(cells, findAndReplaceDialog.GetReplaceText());
     492              Content.ReplaceIndicesByString(cells, findAndReplaceDialog.GetReplaceText());
    476493              break;
    477494            case ReplaceAction.Average:
    478               Content.ManipulationLogic.ReplaceIndicesByAverageValue(cells, false);
     495              Content.ReplaceIndicesByMean(cells, false);
    479496              break;
    480497            case ReplaceAction.Median:
    481               Content.ManipulationLogic.ReplaceIndicesByMedianValue(cells, false);
     498              Content.ReplaceIndicesByMedianValue(cells, false);
    482499              break;
    483500            case ReplaceAction.Random:
    484               Content.ManipulationLogic.ReplaceIndicesByRandomValue(cells, false);
     501              Content.ReplaceIndicesByRandomValue(cells, false);
    485502              break;
    486503            case ReplaceAction.MostCommon:
    487               Content.ManipulationLogic.ReplaceIndicesByMostCommonValue(cells, false);
     504              Content.ReplaceIndicesByMode(cells, false);
    488505              break;
    489506            case ReplaceAction.Interpolation:
    490               Content.ManipulationLogic.ReplaceIndicesByLinearInterpolationOfNeighbours(cells);
     507              Content.ReplaceIndicesByLinearInterpolationOfNeighbours(cells);
    491508              break;
    492509          }
     
    506523
    507524    #endregion FindAndReplaceDialog
    508 
    509525    private void dataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
    510526      if (Content == null) return;
     
    531547            medianToolStripMenuItem_Selection.Enabled =
    532548            randomToolStripMenuItem_Column.Enabled =
    533             randomToolStripMenuItem_Selection.Enabled = !Content.PreProcessingData.AreAllStringColumns(columnIndices);
    534 
    535           smoothingToolStripMenuItem_Column.Enabled =
    536             interpolationToolStripMenuItem_Column.Enabled = !dataGridView.SelectedCells.Contains(dataGridView[e.ColumnIndex, 0])
    537             && !dataGridView.SelectedCells.Contains(dataGridView[e.ColumnIndex, Content.Rows - 1])
    538             && !Content.PreProcessingData.AreAllStringColumns(columnIndices);
     549            randomToolStripMenuItem_Selection.Enabled = !Content.PreprocessingData.AreAllStringColumns(columnIndices);
    539550
    540551          replaceValueOverColumnToolStripMenuItem.Visible = true;
     
    547558      base.dataGridView_KeyDown(sender, e);
    548559      //data is in read only mode....
    549       if (Content.FilterLogic.IsFiltered) return;
     560      if (Content.PreprocessingData.IsFiltered) return;
    550561
    551562      if (e.KeyCode == Keys.Delete) {
     
    581592      }
    582593
    583       foreach (var selectedCell in dataGridView.SelectedCells) {
    584         var cell = (DataGridViewCell)selectedCell;
     594      foreach (DataGridViewCell cell in dataGridView.SelectedCells) {
    585595        if (!selectedCells.ContainsKey(cell.ColumnIndex))
    586           selectedCells.Add(cell.ColumnIndex, new List<int>(1024));
     596          selectedCells.Add(cell.ColumnIndex, new List<int>());
    587597        selectedCells[cell.ColumnIndex].Add(cell.RowIndex);
    588598      }
     
    591601    }
    592602
    593     private void StartReplacing() {
     603    private void ReplaceTransaction(Action action) {
    594604      SuspendRepaint();
    595     }
    596 
    597     private void StopReplacing() {
     605      action();
    598606      ResumeRepaint(true);
    599     }
    600 
    601     private void ReplaceTransaction(Action action) {
    602       StartReplacing();
    603       action();
    604       StopReplacing();
    605607    }
    606608
     
    616618
    617619    #region ContextMenu Events
    618 
    619620    private void ReplaceWithAverage_Column_Click(object sender, EventArgs e) {
    620621      ReplaceTransaction(() => {
    621         Content.ManipulationLogic.ReplaceIndicesByAverageValue(GetSelectedCells(), false);
     622        Content.ReplaceIndicesByMean(GetSelectedCells(), false);
    622623      });
    623624    }
    624625    private void ReplaceWithAverage_Selection_Click(object sender, EventArgs e) {
    625626      ReplaceTransaction(() => {
    626         Content.ManipulationLogic.ReplaceIndicesByAverageValue(GetSelectedCells(), true);
     627        Content.ReplaceIndicesByMean(GetSelectedCells(), true);
    627628      });
    628629    }
     
    630631    private void ReplaceWithMedian_Column_Click(object sender, EventArgs e) {
    631632      ReplaceTransaction(() => {
    632         Content.ManipulationLogic.ReplaceIndicesByMedianValue(GetSelectedCells(), false);
     633        Content.ReplaceIndicesByMedianValue(GetSelectedCells(), false);
    633634      });
    634635    }
    635636    private void ReplaceWithMedian_Selection_Click(object sender, EventArgs e) {
    636637      ReplaceTransaction(() => {
    637         Content.ManipulationLogic.ReplaceIndicesByMedianValue(GetSelectedCells(), true);
     638        Content.ReplaceIndicesByMedianValue(GetSelectedCells(), true);
    638639      });
    639640    }
     
    641642    private void ReplaceWithRandom_Column_Click(object sender, EventArgs e) {
    642643      ReplaceTransaction(() => {
    643         Content.ManipulationLogic.ReplaceIndicesByRandomValue(GetSelectedCells(), false);
     644        Content.ReplaceIndicesByRandomValue(GetSelectedCells(), false);
    644645      });
    645646    }
    646647    private void ReplaceWithRandom_Selection_Click(object sender, EventArgs e) {
    647648      ReplaceTransaction(() => {
    648         Content.ManipulationLogic.ReplaceIndicesByRandomValue(GetSelectedCells(), true);
     649        Content.ReplaceIndicesByRandomValue(GetSelectedCells(), true);
    649650      });
    650651    }
     
    652653    private void ReplaceWithMostCommon_Column_Click(object sender, EventArgs e) {
    653654      ReplaceTransaction(() => {
    654         Content.ManipulationLogic.ReplaceIndicesByMostCommonValue(GetSelectedCells(), false);
     655        Content.ReplaceIndicesByMode(GetSelectedCells(), false);
    655656      });
    656657    }
    657658    private void ReplaceWithMostCommon_Selection_Click(object sender, EventArgs e) {
    658659      ReplaceTransaction(() => {
    659         Content.ManipulationLogic.ReplaceIndicesByMostCommonValue(GetSelectedCells(), true);
     660        Content.ReplaceIndicesByMode(GetSelectedCells(), true);
    660661      });
    661662    }
     
    663664    private void ReplaceWithInterpolation_Column_Click(object sender, EventArgs e) {
    664665      ReplaceTransaction(() => {
    665         Content.ManipulationLogic.ReplaceIndicesByLinearInterpolationOfNeighbours(GetSelectedCells());
    666       });
    667     }
    668 
    669     private void ReplaceWithSmoothing_Selection_Click(object sender, EventArgs e) {
    670       ReplaceTransaction(() => {
    671         Content.ManipulationLogic.ReplaceIndicesBySmoothing(GetSelectedCells());
     666        Content.ReplaceIndicesByLinearInterpolationOfNeighbours(GetSelectedCells());
    672667      });
    673668    }
     
    675670
    676671    private void addRowButton_Click(object sender, EventArgs e) {
    677       Content.PreProcessingData.InsertRow(Content.Rows);
     672      Content.PreprocessingData.InsertRow(Content.Rows);
    678673    }
    679674
    680675    private void addColumnButton_Click(object sender, EventArgs e) {
    681       Content.PreProcessingData.InsertColumn<double>(Content.Columns.ToString(), Content.Columns);
     676      Content.PreprocessingData.InsertColumn<double>(Content.Columns.ToString(), Content.Columns);
    682677    }
    683678
     
    686681
    687682      if (renameDialog.ShowDialog(this) == DialogResult.OK) {
    688         Content.PreProcessingData.RenameColumns(renameDialog.ColumnNames);
     683        Content.PreprocessingData.RenameColumns(renameDialog.ColumnNames);
    689684      }
    690685    }
     
    693688      foreach (DataGridViewColumn column in DataGridView.Columns) {
    694689        var variable = column.HeaderText;
    695         bool isInputTarget = Content.PreProcessingData.InputVariables.Contains(variable)
    696           || Content.PreProcessingData.TargetVariable == variable;
     690        bool isInputTarget = Content.PreprocessingData.InputVariables.Contains(variable)
     691          || Content.PreprocessingData.TargetVariable == variable;
    697692        column.Visible = isInputTarget;
    698693      }
     
    710705      }
    711706    }
     707
     708    private void shuffleAllButton_Click(object sender, EventArgs e) {
     709      Content.Shuffle(shuffleWithinPartitionsCheckBox.Checked);
     710    }
    712711  }
    713712}
  • trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/DataPreprocessingView.cs

    r15370 r15518  
    4949      if (Content != null) {
    5050        var data = Content.Data;
    51         var filterLogic = new FilterLogic(data);
    52         var searchLogic = new SearchLogic(data, filterLogic);
    53         var statisticsLogic = new StatisticsLogic(data, searchLogic);
    54         var manipulationLogic = new ManipulationLogic(data, searchLogic, statisticsLogic);
    5551
    5652        var viewShortcuts = new ItemList<IViewShortcut> {
    57           new DataGridContent(data, manipulationLogic, filterLogic),
    58           new StatisticsContent(data, statisticsLogic),
     53          new DataGridContent(data),
     54          new StatisticsContent(data),
    5955
    6056          new LineChartContent(data),
     
    6359          new MultiScatterPlotContent(data),
    6460          new CorrelationMatrixContent(Content),
    65           new DataCompletenessChartContent(searchLogic),
    66 
    67           new FilterContent(filterLogic),
    68           new ManipulationContent(manipulationLogic, searchLogic, filterLogic),
    69           new TransformationContent(data, filterLogic)
     61          new DataCompletenessChartContent(data),
     62
     63          new FilterContent(data),
     64          new ManipulationContent(data),
     65          new TransformationContent(data)
    7066        };
    7167
  • trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/FilterView.Designer.cs

    r15210 r15518  
    4646    private void InitializeComponent() {
    4747      this.groupBoxFilter = new System.Windows.Forms.GroupBox();
    48       this.checkedFilterView = new HeuristicLab.DataPreprocessing.Views.CheckedFilterCollectionView();
    4948      this.groupBoxFilterInfo = new System.Windows.Forms.GroupBox();
    5049      this.lblPercentage = new System.Windows.Forms.Label();
     
    6362      this.label3 = new System.Windows.Forms.Label();
    6463      this.bottomPanel = new System.Windows.Forms.Panel();
     64      this.checkedFilterView = new HeuristicLab.DataPreprocessing.Views.CheckedFilterCollectionView();
    6565      this.groupBoxFilter.SuspendLayout();
    6666      this.groupBoxFilterInfo.SuspendLayout();
     
    8080      this.groupBoxFilter.TabStop = false;
    8181      this.groupBoxFilter.Text = "Filter";
    82       //
    83       // checkedFilterView
    84       //
    85       this.checkedFilterView.Caption = "filterView";
    86       this.checkedFilterView.Content = null;
    87       this.checkedFilterView.Dock = System.Windows.Forms.DockStyle.Fill;
    88       this.checkedFilterView.Location = new System.Drawing.Point(3, 16);
    89       this.checkedFilterView.Name = "checkedFilterView";
    90       this.checkedFilterView.ReadOnly = false;
    91       this.checkedFilterView.ShowDetails = true;
    92       this.checkedFilterView.Size = new System.Drawing.Size(652, 308);
    93       this.checkedFilterView.TabIndex = 0;
    9482      //
    9583      // groupBoxFilterInfo
     
    185173      this.rBtnOr.AutoSize = true;
    186174      this.rBtnOr.Cursor = System.Windows.Forms.Cursors.Default;
    187       this.rBtnOr.Enabled = false;
    188175      this.rBtnOr.Location = new System.Drawing.Point(53, 6);
    189176      this.rBtnOr.Name = "rBtnOr";
     
    199186      this.rBtnAnd.Checked = true;
    200187      this.rBtnAnd.Cursor = System.Windows.Forms.Cursors.Default;
    201       this.rBtnAnd.Enabled = false;
    202188      this.rBtnAnd.Location = new System.Drawing.Point(3, 6);
    203189      this.rBtnAnd.Name = "rBtnAnd";
     
    273259      this.bottomPanel.Size = new System.Drawing.Size(670, 30);
    274260      this.bottomPanel.TabIndex = 13;
     261      //
     262      // checkedFilterView
     263      //
     264      this.checkedFilterView.Caption = "filterView";
     265      this.checkedFilterView.Content = null;
     266      this.checkedFilterView.Dock = System.Windows.Forms.DockStyle.Fill;
     267      this.checkedFilterView.Location = new System.Drawing.Point(3, 16);
     268      this.checkedFilterView.Name = "checkedFilterView";
     269      this.checkedFilterView.ReadOnly = false;
     270      this.checkedFilterView.ShowDetails = true;
     271      this.checkedFilterView.Size = new System.Drawing.Size(652, 308);
     272      this.checkedFilterView.TabIndex = 0;
    275273      //
    276274      // FilterView
  • trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/FilterView.cs

    r15110 r15518  
    2121
    2222using System;
    23 using System.Collections.Generic;
    2423using System.Linq;
    2524using HeuristicLab.Collections;
     
    4443    }
    4544
    46     private void InitData() {
    47       checkedFilterView.Content = Content.Filters;
    48       checkedFilterView.Content.ItemsAdded += Content_ItemsAdded;
    49       checkedFilterView.Content.ItemsRemoved += Content_ItemsRemoved;
    50       checkedFilterView.Content.CheckedItemsChanged += Content_CheckedItemsChanged;
    51     }
    52 
    5345    protected override void OnContentChanged() {
    5446      base.OnContentChanged();
    5547      if (Content != null) {
    56         InitData();
    57         UpdateFilterInfo();
     48        checkedFilterView.Content = Content.Filters;
     49        rBtnAnd.Checked = Content.IsAndCombination;
     50        rBtnOr.Checked = !Content.IsAndCombination;
     51        UpdateFilter();
     52      } else {
     53        checkedFilterView.Content = null;
    5854      }
    5955    }
     56    protected override void RegisterContentEvents() {
     57      base.RegisterContentEvents();
     58      Content.Filters.ItemsAdded += Content_ItemsAdded;
     59      Content.Filters.ItemsRemoved += Content_ItemsRemoved;
     60      Content.Filters.CheckedItemsChanged += Content_CheckedItemsChanged;
     61    }
     62    protected override void DeregisterContentEvents() {
     63      Content.Filters.ItemsAdded -= Content_ItemsAdded;
     64      Content.Filters.ItemsRemoved -= Content_ItemsRemoved;
     65      Content.Filters.CheckedItemsChanged -= Content_CheckedItemsChanged;
     66      base.DeregisterContentEvents();
     67    }
    6068
     69    private void UpdateFilter() {
     70      bool activeFilters = Content.ActiveFilters.Any();
     71      applyFilterButton.Enabled = activeFilters;
     72
     73      Content.PreprocessingData.ResetFilter();
     74
     75      int numTotal = Content.PreprocessingData.Rows;
     76      int numRemaining = numTotal;
     77
     78      if (activeFilters) {
     79        var remainingRows = Content.GetRemainingRows();
     80        numRemaining = remainingRows.Count(x => x);
     81
     82        if (numRemaining < numTotal) {
     83          Content.PreprocessingData.SetFilter(remainingRows);
     84        }
     85      }
     86
     87      tbRemaining.Text = numRemaining.ToString();
     88      double ratio = numTotal > 0 ? numRemaining / (double)numTotal : 0.0;
     89      tbPercentage.Text = ratio.ToString("P4");
     90      tbTotal.Text = numTotal.ToString();
     91    }
     92
     93
     94    #region Content Events
     95    //whenever a new filter is added the preprocessing data is set to the filter
     96    private void Content_ItemsAdded(object sender, Collections.CollectionItemsChangedEventArgs<IFilter> e) {
     97      if (Content != null) {
     98        foreach (IFilter filter in e.Items) {
     99          filter.ConstrainedValue = Content.PreprocessingData;
     100        }
     101      }
     102    }
     103    private void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IFilter> e) {
     104      if (Content != null) {
     105        UpdateFilter();
     106      }
     107    }
    61108    private void Content_CheckedItemsChanged(object sender, Collections.CollectionItemsChangedEventArgs<IFilter> e) {
    62109      if (Content != null) {
     
    64111          filter.Active = checkedFilterView.Content.ItemChecked(filter);
    65112        }
    66         UpdateFilterInfo();
     113        UpdateFilter();
    67114      }
    68115    }
     116    #endregion
    69117
    70     private void UpdateFilterInfo() {
    71       List<IFilter> filters = Content.Filters.ToList();
    72       int activeFilters = filters.Count(c => c.Active);
    73       applyFilterButton.Enabled = (activeFilters > 0);
    74       rBtnAnd.Enabled = (activeFilters > 0);
    75       rBtnOr.Enabled = (activeFilters > 0);
    76       Content.FilterLogic.Reset();
    77       bool[] result = Content.FilterLogic.Preview(filters, rBtnAnd.Checked);
    78 
    79       int filteredCnt = result.Count(c => !c);
    80 
    81       tbRemaining.Text = filteredCnt.ToString();
    82       double percentage = result.Length == 0 ? 0.0 : filteredCnt * 100 / (double)result.Length;
    83       tbPercentage.Text = String.Format("{0:0.0000}%", percentage);
    84       tbTotal.Text = result.Length.ToString();
     118    #region Controls Events
     119    private void rBtnAnd_CheckedChanged(object sender, EventArgs e) {
     120      if (Content != null) {
     121        Content.IsAndCombination = rBtnAnd.Checked;
     122        UpdateFilter();
     123      }
    85124    }
    86 
    87125    private void applyFilterButton_Click(object sender, EventArgs e) {
    88126      if (Content != null) {
    89         List<IFilter> filters = Content.Filters.ToList();
    90127        //apply filters
    91         Content.FilterLogic.Apply(filters, rBtnAnd.Checked);
     128        Content.PreprocessingData.PersistFilter();
     129        Content.PreprocessingData.ResetFilter();
    92130        //deactivate checked filters
    93         filters = checkedFilterView.Content.CheckedItems.ToList();
    94         foreach (IFilter filter in filters) {
     131        foreach (var filter in Content.Filters.CheckedItems) {
    95132          checkedFilterView.Content.SetItemCheckedState(filter, false);
    96133          filter.Active = false;
    97134        }
    98         UpdateFilterInfo();
     135        UpdateFilter();
    99136      }
    100137    }
    101 
    102     //whenever a new filter is added the preprocessing data is set to the filter
    103     private void Content_ItemsAdded(object sender, Collections.CollectionItemsChangedEventArgs<IFilter> e) {
    104       if (Content != null) {
    105         foreach (IFilter filter in e.Items) {
    106           filter.ConstrainedValue = Content.FilterLogic.PreprocessingData;
    107         }
    108       }
    109     }
    110 
    111     private void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IFilter> e) {
    112       if (Content != null) {
    113         UpdateFilterInfo();
    114       }
    115     }
    116 
    117     private void rBtnAnd_CheckedChanged(object sender, EventArgs e) {
    118       if (Content != null) {
    119         UpdateFilterInfo();
    120         Content.IsAndCombination = rBtnAnd.Checked;
    121       }
    122     }
     138    #endregion
    123139  }
    124140}
  • trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/ManipulationView.Designer.cs

    r14185 r15518  
    6262      this.txtDeleteRowsInfo = new System.Windows.Forms.TextBox();
    6363      this.label5 = new System.Windows.Forms.Label();
    64       this.tabReplaceMissingValues = new System.Windows.Forms.TabPage();
    65       this.txtReplaceValue = new System.Windows.Forms.TextBox();
    66       this.cmbVariableNames = new System.Windows.Forms.ComboBox();
    67       this.cmbReplaceWith = new System.Windows.Forms.ComboBox();
    68       this.lblValueColon = new System.Windows.Forms.Label();
    69       this.label8 = new System.Windows.Forms.Label();
    70       this.label10 = new System.Windows.Forms.Label();
    71       this.tabDataShuffle = new System.Windows.Forms.TabPage();
    72       this.shuffleSeparatelyCheckbox = new System.Windows.Forms.CheckBox();
    73       this.lblShuffleProperties = new System.Windows.Forms.Label();
    7464      this.grpBoxPreview = new System.Windows.Forms.GroupBox();
    7565      this.tabsPreview = new System.Windows.Forms.TabControl();
     
    7767      this.lblPreviewInActive = new System.Windows.Forms.Label();
    7868      this.tabPreviewDeleteColumnsInfo = new System.Windows.Forms.TabPage();
     69      this.panel1 = new System.Windows.Forms.Panel();
    7970      this.lblPreviewColumnsInfo = new System.Windows.Forms.Label();
    8071      this.tabPreviewDeleteColumnsVariance = new System.Windows.Forms.TabPage();
     72      this.panel2 = new System.Windows.Forms.Panel();
     73      this.lblPreviewColumnsVariance = new System.Windows.Forms.Label();
    8174      this.label12 = new System.Windows.Forms.Label();
    82       this.lblPreviewColumnsVariance = new System.Windows.Forms.Label();
    8375      this.tabPreviewDeleteRowsInfo = new System.Windows.Forms.TabPage();
    8476      this.lblPreviewRowsInfo = new System.Windows.Forms.Label();
    85       this.tabPreviewReplaceMissingValues = new System.Windows.Forms.TabPage();
    86       this.lblPreviewReplaceMissingValues = new System.Windows.Forms.Label();
    87       this.tabPreviewShuffle = new System.Windows.Forms.TabPage();
    88       this.lblPreviewShuffle = new System.Windows.Forms.Label();
    8977      this.label9 = new System.Windows.Forms.Label();
    90       this.panel1 = new System.Windows.Forms.Panel();
    91       this.panel2 = new System.Windows.Forms.Panel();
    9278      this.grpBoxData.SuspendLayout();
    9379      this.tabsData.SuspendLayout();
     
    9682      this.tabDataDeleteColumnsVariance.SuspendLayout();
    9783      this.tabDataDeleteRowsInfo.SuspendLayout();
    98       this.tabReplaceMissingValues.SuspendLayout();
    99       this.tabDataShuffle.SuspendLayout();
    10084      this.grpBoxPreview.SuspendLayout();
    10185      this.tabsPreview.SuspendLayout();
    10286      this.tabPreviewInactive.SuspendLayout();
    10387      this.tabPreviewDeleteColumnsInfo.SuspendLayout();
     88      this.panel1.SuspendLayout();
    10489      this.tabPreviewDeleteColumnsVariance.SuspendLayout();
     90      this.panel2.SuspendLayout();
    10591      this.tabPreviewDeleteRowsInfo.SuspendLayout();
    106       this.tabPreviewReplaceMissingValues.SuspendLayout();
    107       this.tabPreviewShuffle.SuspendLayout();
    108       this.panel1.SuspendLayout();
    109       this.panel2.SuspendLayout();
    11092      this.SuspendLayout();
    11193      //
    11294      // lstMethods
    11395      //
    114       this.lstMethods.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
     96      this.lstMethods.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
    11597            | System.Windows.Forms.AnchorStyles.Right)));
    11698      this.lstMethods.FormattingEnabled = true;
    117       this.lstMethods.ItemHeight = 16;
    11899      this.lstMethods.Items.AddRange(new object[] {
    119100            "Delete Columns with insufficient Information",
    120101            "Delete Columns with insufficient Variance",
    121             "Delete Rows with insufficient Information",
    122             "Replace Missing Values",
    123             "Shuffle Data"});
    124       this.lstMethods.Location = new System.Drawing.Point(4, 4);
    125       this.lstMethods.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
     102            "Delete Rows with insufficient Information"});
     103      this.lstMethods.Location = new System.Drawing.Point(3, 3);
    126104      this.lstMethods.Name = "lstMethods";
    127       this.lstMethods.Size = new System.Drawing.Size(976, 116);
     105      this.lstMethods.Size = new System.Drawing.Size(733, 95);
    128106      this.lstMethods.Sorted = true;
    129107      this.lstMethods.TabIndex = 0;
     
    134112      this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
    135113      this.btnApply.Enabled = false;
    136       this.btnApply.Location = new System.Drawing.Point(804, 615);
    137       this.btnApply.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
     114      this.btnApply.Location = new System.Drawing.Point(603, 500);
    138115      this.btnApply.Name = "btnApply";
    139       this.btnApply.Size = new System.Drawing.Size(172, 28);
     116      this.btnApply.Size = new System.Drawing.Size(129, 23);
    140117      this.btnApply.TabIndex = 2;
    141118      this.btnApply.Text = "Apply Manipulation";
     
    145122      // grpBoxData
    146123      //
    147       this.grpBoxData.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
     124      this.grpBoxData.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
    148125            | System.Windows.Forms.AnchorStyles.Right)));
    149126      this.grpBoxData.Controls.Add(this.tabsData);
    150       this.grpBoxData.Location = new System.Drawing.Point(5, 129);
    151       this.grpBoxData.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
     127      this.grpBoxData.Location = new System.Drawing.Point(4, 105);
    152128      this.grpBoxData.Name = "grpBoxData";
    153       this.grpBoxData.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
    154       this.grpBoxData.Size = new System.Drawing.Size(976, 233);
     129      this.grpBoxData.Size = new System.Drawing.Size(732, 189);
    155130      this.grpBoxData.TabIndex = 3;
    156131      this.grpBoxData.TabStop = false;
     
    159134      // tabsData
    160135      //
    161       this.tabsData.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
     136      this.tabsData.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
    162137            | System.Windows.Forms.AnchorStyles.Right)));
    163138      this.tabsData.Controls.Add(this.tabPage1);
     
    165140      this.tabsData.Controls.Add(this.tabDataDeleteColumnsVariance);
    166141      this.tabsData.Controls.Add(this.tabDataDeleteRowsInfo);
    167       this.tabsData.Controls.Add(this.tabReplaceMissingValues);
    168       this.tabsData.Controls.Add(this.tabDataShuffle);
    169142      this.tabsData.ItemSize = new System.Drawing.Size(58, 18);
    170       this.tabsData.Location = new System.Drawing.Point(8, 23);
    171       this.tabsData.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
     143      this.tabsData.Location = new System.Drawing.Point(6, 19);
    172144      this.tabsData.Name = "tabsData";
    173145      this.tabsData.SelectedIndex = 0;
    174       this.tabsData.Size = new System.Drawing.Size(959, 202);
     146      this.tabsData.Size = new System.Drawing.Size(719, 164);
    175147      this.tabsData.TabIndex = 3;
    176148      //
     
    179151      this.tabPage1.Controls.Add(this.label7);
    180152      this.tabPage1.Location = new System.Drawing.Point(4, 22);
    181       this.tabPage1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    182153      this.tabPage1.Name = "tabPage1";
    183       this.tabPage1.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
    184       this.tabPage1.Size = new System.Drawing.Size(951, 176);
     154      this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
     155      this.tabPage1.Size = new System.Drawing.Size(711, 138);
    185156      this.tabPage1.TabIndex = 5;
    186157      this.tabPage1.Text = "tabDataInactive";
     
    191162      this.label7.AutoSize = true;
    192163      this.label7.Enabled = false;
    193       this.label7.Location = new System.Drawing.Point(4, 4);
    194       this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
     164      this.label7.Location = new System.Drawing.Point(3, 3);
    195165      this.label7.Name = "label7";
    196       this.label7.Size = new System.Drawing.Size(345, 17);
     166      this.label7.Size = new System.Drawing.Size(259, 13);
    197167      this.label7.TabIndex = 1;
    198168      this.label7.Text = "Please select one of the manipulation methods above";
     
    204174      this.tabDataDeleteColumnsInformation.Controls.Add(this.label1);
    205175      this.tabDataDeleteColumnsInformation.Location = new System.Drawing.Point(4, 22);
    206       this.tabDataDeleteColumnsInformation.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    207176      this.tabDataDeleteColumnsInformation.Name = "tabDataDeleteColumnsInformation";
    208       this.tabDataDeleteColumnsInformation.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
    209       this.tabDataDeleteColumnsInformation.Size = new System.Drawing.Size(951, 176);
     177      this.tabDataDeleteColumnsInformation.Padding = new System.Windows.Forms.Padding(3);
     178      this.tabDataDeleteColumnsInformation.Size = new System.Drawing.Size(711, 138);
    210179      this.tabDataDeleteColumnsInformation.TabIndex = 0;
    211180      this.tabDataDeleteColumnsInformation.Text = "del columns info";
     
    215184      //
    216185      this.label2.AutoSize = true;
    217       this.label2.Location = new System.Drawing.Point(272, 4);
    218       this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
     186      this.label2.Location = new System.Drawing.Point(204, 3);
    219187      this.label2.Name = "label2";
    220       this.label2.Size = new System.Drawing.Size(120, 17);
     188      this.label2.Size = new System.Drawing.Size(89, 13);
    221189      this.label2.TabIndex = 5;
    222190      this.label2.Text = "% missing values.";
     
    224192      // txtDeleteColumnsInfo
    225193      //
    226       this.txtDeleteColumnsInfo.Location = new System.Drawing.Point(219, 0);
    227       this.txtDeleteColumnsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
     194      this.txtDeleteColumnsInfo.Location = new System.Drawing.Point(164, 0);
    228195      this.txtDeleteColumnsInfo.Name = "txtDeleteColumnsInfo";
    229       this.txtDeleteColumnsInfo.Size = new System.Drawing.Size(44, 22);
     196      this.txtDeleteColumnsInfo.Size = new System.Drawing.Size(34, 20);
    230197      this.txtDeleteColumnsInfo.TabIndex = 4;
    231198      this.txtDeleteColumnsInfo.TextChanged += new System.EventHandler(this.txtDeleteColumnsInfo_TextChanged);
     
    234201      //
    235202      this.label1.AutoSize = true;
    236       this.label1.Location = new System.Drawing.Point(4, 4);
    237       this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
     203      this.label1.Location = new System.Drawing.Point(3, 3);
    238204      this.label1.Name = "label1";
    239       this.label1.Size = new System.Drawing.Size(205, 17);
     205      this.label1.Size = new System.Drawing.Size(155, 13);
    240206      this.label1.TabIndex = 3;
    241207      this.label1.Text = "Delete columns with more than ";
     
    246212      this.tabDataDeleteColumnsVariance.Controls.Add(this.label4);
    247213      this.tabDataDeleteColumnsVariance.Location = new System.Drawing.Point(4, 22);
    248       this.tabDataDeleteColumnsVariance.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    249214      this.tabDataDeleteColumnsVariance.Name = "tabDataDeleteColumnsVariance";
    250       this.tabDataDeleteColumnsVariance.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
    251       this.tabDataDeleteColumnsVariance.Size = new System.Drawing.Size(951, 176);
     215      this.tabDataDeleteColumnsVariance.Padding = new System.Windows.Forms.Padding(3);
     216      this.tabDataDeleteColumnsVariance.Size = new System.Drawing.Size(711, 138);
    252217      this.tabDataDeleteColumnsVariance.TabIndex = 1;
    253218      this.tabDataDeleteColumnsVariance.Text = "del columns variance";
     
    256221      // txtDeleteColumnsVariance
    257222      //
    258       this.txtDeleteColumnsVariance.Location = new System.Drawing.Point(305, 0);
    259       this.txtDeleteColumnsVariance.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
     223      this.txtDeleteColumnsVariance.Location = new System.Drawing.Point(229, 0);
    260224      this.txtDeleteColumnsVariance.Name = "txtDeleteColumnsVariance";
    261       this.txtDeleteColumnsVariance.Size = new System.Drawing.Size(179, 22);
     225      this.txtDeleteColumnsVariance.Size = new System.Drawing.Size(135, 20);
    262226      this.txtDeleteColumnsVariance.TabIndex = 4;
    263227      this.txtDeleteColumnsVariance.TextChanged += new System.EventHandler(this.txtDeleteColumnsVariance_TextChanged);
     
    266230      //
    267231      this.label4.AutoSize = true;
    268       this.label4.Location = new System.Drawing.Point(4, 4);
    269       this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
     232      this.label4.Location = new System.Drawing.Point(3, 3);
    270233      this.label4.Name = "label4";
    271       this.label4.Size = new System.Drawing.Size(292, 17);
     234      this.label4.Size = new System.Drawing.Size(220, 13);
    272235      this.label4.TabIndex = 3;
    273236      this.label4.Text = "Delete columns with a variance smaller than  ";
     
    279242      this.tabDataDeleteRowsInfo.Controls.Add(this.label5);
    280243      this.tabDataDeleteRowsInfo.Location = new System.Drawing.Point(4, 22);
    281       this.tabDataDeleteRowsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    282244      this.tabDataDeleteRowsInfo.Name = "tabDataDeleteRowsInfo";
    283       this.tabDataDeleteRowsInfo.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
    284       this.tabDataDeleteRowsInfo.Size = new System.Drawing.Size(951, 176);
     245      this.tabDataDeleteRowsInfo.Padding = new System.Windows.Forms.Padding(3);
     246      this.tabDataDeleteRowsInfo.Size = new System.Drawing.Size(711, 138);
    285247      this.tabDataDeleteRowsInfo.TabIndex = 2;
    286248      this.tabDataDeleteRowsInfo.Text = "del rows info";
     
    290252      //
    291253      this.label3.AutoSize = true;
    292       this.label3.Location = new System.Drawing.Point(252, 4);
    293       this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
     254      this.label3.Location = new System.Drawing.Point(189, 3);
    294255      this.label3.Name = "label3";
    295       this.label3.Size = new System.Drawing.Size(120, 17);
     256      this.label3.Size = new System.Drawing.Size(89, 13);
    296257      this.label3.TabIndex = 8;
    297258      this.label3.Text = "% missing values.";
     
    299260      // txtDeleteRowsInfo
    300261      //
    301       this.txtDeleteRowsInfo.Location = new System.Drawing.Point(196, 0);
    302       this.txtDeleteRowsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
     262      this.txtDeleteRowsInfo.Location = new System.Drawing.Point(147, 0);
    303263      this.txtDeleteRowsInfo.Name = "txtDeleteRowsInfo";
    304       this.txtDeleteRowsInfo.Size = new System.Drawing.Size(44, 22);
     264      this.txtDeleteRowsInfo.Size = new System.Drawing.Size(34, 20);
    305265      this.txtDeleteRowsInfo.TabIndex = 7;
    306266      this.txtDeleteRowsInfo.TextChanged += new System.EventHandler(this.txtDeleteRowsInfo_TextChanged);
     
    309269      //
    310270      this.label5.AutoSize = true;
    311       this.label5.Location = new System.Drawing.Point(4, 4);
    312       this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
     271      this.label5.Location = new System.Drawing.Point(3, 3);
    313272      this.label5.Name = "label5";
    314       this.label5.Size = new System.Drawing.Size(182, 17);
     273      this.label5.Size = new System.Drawing.Size(138, 13);
    315274      this.label5.TabIndex = 6;
    316275      this.label5.Text = "Delete rows with more than ";
    317276      //
    318       // tabReplaceMissingValues
    319       //
    320       this.tabReplaceMissingValues.Controls.Add(this.txtReplaceValue);
    321       this.tabReplaceMissingValues.Controls.Add(this.cmbVariableNames);
    322       this.tabReplaceMissingValues.Controls.Add(this.cmbReplaceWith);
    323       this.tabReplaceMissingValues.Controls.Add(this.lblValueColon);
    324       this.tabReplaceMissingValues.Controls.Add(this.label8);
    325       this.tabReplaceMissingValues.Controls.Add(this.label10);
    326       this.tabReplaceMissingValues.Location = new System.Drawing.Point(4, 22);
    327       this.tabReplaceMissingValues.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    328       this.tabReplaceMissingValues.Name = "tabReplaceMissingValues";
    329       this.tabReplaceMissingValues.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
    330       this.tabReplaceMissingValues.Size = new System.Drawing.Size(951, 176);
    331       this.tabReplaceMissingValues.TabIndex = 6;
    332       this.tabReplaceMissingValues.Text = "repl missing vals";
    333       this.tabReplaceMissingValues.UseVisualStyleBackColor = true;
    334       //
    335       // txtReplaceValue
    336       //
    337       this.txtReplaceValue.Location = new System.Drawing.Point(231, 33);
    338       this.txtReplaceValue.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    339       this.txtReplaceValue.Name = "txtReplaceValue";
    340       this.txtReplaceValue.Size = new System.Drawing.Size(132, 22);
    341       this.txtReplaceValue.TabIndex = 2;
    342       this.txtReplaceValue.TextChanged += new System.EventHandler(this.txtReplaceValue_TextChanged);
    343       //
    344       // cmbVariableNames
    345       //
    346       this.cmbVariableNames.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
    347       this.cmbVariableNames.FormattingEnabled = true;
    348       this.cmbVariableNames.Location = new System.Drawing.Point(189, 0);
    349       this.cmbVariableNames.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    350       this.cmbVariableNames.Name = "cmbVariableNames";
    351       this.cmbVariableNames.Size = new System.Drawing.Size(160, 24);
    352       this.cmbVariableNames.TabIndex = 1;
    353       this.cmbVariableNames.SelectedIndexChanged += new System.EventHandler(this.cmbReplaceWith_SelectedIndexChanged);
    354       //
    355       // cmbReplaceWith
    356       //
    357       this.cmbReplaceWith.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
    358       this.cmbReplaceWith.FormattingEnabled = true;
    359       this.cmbReplaceWith.Items.AddRange(new object[] {
    360             "Value",
    361             "Average",
    362             "Median",
    363             "Most Common",
    364             "Random"});
    365       this.cmbReplaceWith.Location = new System.Drawing.Point(47, 33);
    366       this.cmbReplaceWith.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    367       this.cmbReplaceWith.Name = "cmbReplaceWith";
    368       this.cmbReplaceWith.Size = new System.Drawing.Size(160, 24);
    369       this.cmbReplaceWith.TabIndex = 1;
    370       this.cmbReplaceWith.SelectedIndexChanged += new System.EventHandler(this.cmbReplaceWith_SelectedIndexChanged);
    371       //
    372       // lblValueColon
    373       //
    374       this.lblValueColon.AutoSize = true;
    375       this.lblValueColon.Location = new System.Drawing.Point(209, 37);
    376       this.lblValueColon.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
    377       this.lblValueColon.Name = "lblValueColon";
    378       this.lblValueColon.Size = new System.Drawing.Size(12, 17);
    379       this.lblValueColon.TabIndex = 0;
    380       this.lblValueColon.Text = ":";
    381       //
    382       // label8
    383       //
    384       this.label8.AutoSize = true;
    385       this.label8.Location = new System.Drawing.Point(4, 37);
    386       this.label8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
    387       this.label8.Name = "label8";
    388       this.label8.Size = new System.Drawing.Size(32, 17);
    389       this.label8.TabIndex = 0;
    390       this.label8.Text = "with";
    391       //
    392       // label10
    393       //
    394       this.label10.AutoSize = true;
    395       this.label10.Location = new System.Drawing.Point(4, 4);
    396       this.label10.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
    397       this.label10.Name = "label10";
    398       this.label10.Size = new System.Drawing.Size(177, 17);
    399       this.label10.TabIndex = 0;
    400       this.label10.Text = "Replace missing values for";
    401       //
    402       // tabDataShuffle
    403       //
    404       this.tabDataShuffle.Controls.Add(this.shuffleSeparatelyCheckbox);
    405       this.tabDataShuffle.Controls.Add(this.lblShuffleProperties);
    406       this.tabDataShuffle.Location = new System.Drawing.Point(4, 22);
    407       this.tabDataShuffle.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    408       this.tabDataShuffle.Name = "tabDataShuffle";
    409       this.tabDataShuffle.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
    410       this.tabDataShuffle.Size = new System.Drawing.Size(951, 176);
    411       this.tabDataShuffle.TabIndex = 4;
    412       this.tabDataShuffle.Text = "shuffle";
    413       this.tabDataShuffle.UseVisualStyleBackColor = true;
    414       //
    415       // shuffleSeparatelyCheckbox
    416       //
    417       this.shuffleSeparatelyCheckbox.AutoSize = true;
    418       this.shuffleSeparatelyCheckbox.Location = new System.Drawing.Point(8, 2);
    419       this.shuffleSeparatelyCheckbox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    420       this.shuffleSeparatelyCheckbox.Name = "shuffleSeparatelyCheckbox";
    421       this.shuffleSeparatelyCheckbox.Size = new System.Drawing.Size(312, 21);
    422       this.shuffleSeparatelyCheckbox.TabIndex = 1;
    423       this.shuffleSeparatelyCheckbox.Text = "Shuffle training and test partitions separately";
    424       this.shuffleSeparatelyCheckbox.UseVisualStyleBackColor = true;
    425       //
    426       // lblShuffleProperties
    427       //
    428       this.lblShuffleProperties.AutoSize = true;
    429       this.lblShuffleProperties.Enabled = false;
    430       this.lblShuffleProperties.Location = new System.Drawing.Point(4, 4);
    431       this.lblShuffleProperties.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
    432       this.lblShuffleProperties.Name = "lblShuffleProperties";
    433       this.lblShuffleProperties.Size = new System.Drawing.Size(154, 17);
    434       this.lblShuffleProperties.TabIndex = 0;
    435       this.lblShuffleProperties.Text = "No properties available";
    436       //
    437277      // grpBoxPreview
    438278      //
    439       this.grpBoxPreview.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
    440             | System.Windows.Forms.AnchorStyles.Left)
     279      this.grpBoxPreview.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
     280            | System.Windows.Forms.AnchorStyles.Left) 
    441281            | System.Windows.Forms.AnchorStyles.Right)));
    442282      this.grpBoxPreview.Controls.Add(this.tabsPreview);
    443       this.grpBoxPreview.Location = new System.Drawing.Point(5, 370);
    444       this.grpBoxPreview.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
     283      this.grpBoxPreview.Location = new System.Drawing.Point(4, 301);
    445284      this.grpBoxPreview.Name = "grpBoxPreview";
    446       this.grpBoxPreview.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
    447       this.grpBoxPreview.Size = new System.Drawing.Size(976, 238);
     285      this.grpBoxPreview.Size = new System.Drawing.Size(732, 193);
    448286      this.grpBoxPreview.TabIndex = 4;
    449287      this.grpBoxPreview.TabStop = false;
     
    452290      // tabsPreview
    453291      //
    454       this.tabsPreview.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
     292      this.tabsPreview.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
    455293            | System.Windows.Forms.AnchorStyles.Right)));
    456294      this.tabsPreview.Controls.Add(this.tabPreviewInactive);
     
    458296      this.tabsPreview.Controls.Add(this.tabPreviewDeleteColumnsVariance);
    459297      this.tabsPreview.Controls.Add(this.tabPreviewDeleteRowsInfo);
    460       this.tabsPreview.Controls.Add(this.tabPreviewReplaceMissingValues);
    461       this.tabsPreview.Controls.Add(this.tabPreviewShuffle);
    462298      this.tabsPreview.ItemSize = new System.Drawing.Size(58, 18);
    463       this.tabsPreview.Location = new System.Drawing.Point(8, 23);
    464       this.tabsPreview.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
     299      this.tabsPreview.Location = new System.Drawing.Point(6, 19);
    465300      this.tabsPreview.Name = "tabsPreview";
    466301      this.tabsPreview.SelectedIndex = 0;
    467       this.tabsPreview.Size = new System.Drawing.Size(959, 207);
     302      this.tabsPreview.Size = new System.Drawing.Size(719, 168);
    468303      this.tabsPreview.TabIndex = 3;
    469304      //
     
    472307      this.tabPreviewInactive.Controls.Add(this.lblPreviewInActive);
    473308      this.tabPreviewInactive.Location = new System.Drawing.Point(4, 22);
    474       this.tabPreviewInactive.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    475309      this.tabPreviewInactive.Name = "tabPreviewInactive";
    476       this.tabPreviewInactive.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
    477       this.tabPreviewInactive.Size = new System.Drawing.Size(951, 181);
     310      this.tabPreviewInactive.Padding = new System.Windows.Forms.Padding(3);
     311      this.tabPreviewInactive.Size = new System.Drawing.Size(711, 142);
    478312      this.tabPreviewInactive.TabIndex = 5;
    479313      this.tabPreviewInactive.Text = "inactive";
     
    483317      //
    484318      this.lblPreviewInActive.AutoSize = true;
    485       this.lblPreviewInActive.Location = new System.Drawing.Point(4, 4);
    486       this.lblPreviewInActive.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
     319      this.lblPreviewInActive.Location = new System.Drawing.Point(3, 3);
    487320      this.lblPreviewInActive.Name = "lblPreviewInActive";
    488       this.lblPreviewInActive.Size = new System.Drawing.Size(491, 51);
     321      this.lblPreviewInActive.Size = new System.Drawing.Size(361, 39);
    489322      this.lblPreviewInActive.TabIndex = 2;
    490323      this.lblPreviewInActive.Text = "Filters are active and thus manipulations cannot be applied!\r\n\r\nPlease deactive t" +
     
    496329      this.tabPreviewDeleteColumnsInfo.Controls.Add(this.panel1);
    497330      this.tabPreviewDeleteColumnsInfo.Location = new System.Drawing.Point(4, 22);
    498       this.tabPreviewDeleteColumnsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    499331      this.tabPreviewDeleteColumnsInfo.Name = "tabPreviewDeleteColumnsInfo";
    500       this.tabPreviewDeleteColumnsInfo.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
    501       this.tabPreviewDeleteColumnsInfo.Size = new System.Drawing.Size(951, 181);
     332      this.tabPreviewDeleteColumnsInfo.Padding = new System.Windows.Forms.Padding(3);
     333      this.tabPreviewDeleteColumnsInfo.Size = new System.Drawing.Size(711, 142);
    502334      this.tabPreviewDeleteColumnsInfo.TabIndex = 0;
    503335      this.tabPreviewDeleteColumnsInfo.Text = "del columns info";
    504336      this.tabPreviewDeleteColumnsInfo.UseVisualStyleBackColor = true;
    505337      //
     338      // panel1
     339      //
     340      this.panel1.AutoScroll = true;
     341      this.panel1.Controls.Add(this.lblPreviewColumnsInfo);
     342      this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
     343      this.panel1.Location = new System.Drawing.Point(3, 3);
     344      this.panel1.Margin = new System.Windows.Forms.Padding(2);
     345      this.panel1.Name = "panel1";
     346      this.panel1.Size = new System.Drawing.Size(705, 136);
     347      this.panel1.TabIndex = 2;
     348      //
    506349      // lblPreviewColumnsInfo
    507350      //
     
    509352      this.lblPreviewColumnsInfo.Dock = System.Windows.Forms.DockStyle.Left;
    510353      this.lblPreviewColumnsInfo.Location = new System.Drawing.Point(0, 0);
    511       this.lblPreviewColumnsInfo.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
    512354      this.lblPreviewColumnsInfo.Name = "lblPreviewColumnsInfo";
    513       this.lblPreviewColumnsInfo.Size = new System.Drawing.Size(423, 17);
     355      this.lblPreviewColumnsInfo.Size = new System.Drawing.Size(318, 13);
    514356      this.lblPreviewColumnsInfo.TabIndex = 1;
    515357      this.lblPreviewColumnsInfo.Text = "{0} columns with more than {1} % missing values would be deleted";
     
    520362      this.tabPreviewDeleteColumnsVariance.Controls.Add(this.label12);
    521363      this.tabPreviewDeleteColumnsVariance.Location = new System.Drawing.Point(4, 22);
    522       this.tabPreviewDeleteColumnsVariance.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    523364      this.tabPreviewDeleteColumnsVariance.Name = "tabPreviewDeleteColumnsVariance";
    524       this.tabPreviewDeleteColumnsVariance.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
    525       this.tabPreviewDeleteColumnsVariance.Size = new System.Drawing.Size(951, 181);
     365      this.tabPreviewDeleteColumnsVariance.Padding = new System.Windows.Forms.Padding(3);
     366      this.tabPreviewDeleteColumnsVariance.Size = new System.Drawing.Size(711, 142);
    526367      this.tabPreviewDeleteColumnsVariance.TabIndex = 1;
    527368      this.tabPreviewDeleteColumnsVariance.Text = "del columns variance";
    528369      this.tabPreviewDeleteColumnsVariance.UseVisualStyleBackColor = true;
    529370      //
    530       // label12
    531       //
    532       this.label12.AutoSize = true;
    533       this.label12.Location = new System.Drawing.Point(8, 27);
    534       this.label12.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
    535       this.label12.Name = "label12";
    536       this.label12.Size = new System.Drawing.Size(0, 17);
    537       this.label12.TabIndex = 2;
     371      // panel2
     372      //
     373      this.panel2.AutoScroll = true;
     374      this.panel2.Controls.Add(this.lblPreviewColumnsVariance);
     375      this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
     376      this.panel2.Location = new System.Drawing.Point(3, 3);
     377      this.panel2.Margin = new System.Windows.Forms.Padding(2);
     378      this.panel2.Name = "panel2";
     379      this.panel2.Size = new System.Drawing.Size(705, 136);
     380      this.panel2.TabIndex = 3;
    538381      //
    539382      // lblPreviewColumnsVariance
     
    542385      this.lblPreviewColumnsVariance.Dock = System.Windows.Forms.DockStyle.Left;
    543386      this.lblPreviewColumnsVariance.Location = new System.Drawing.Point(0, 0);
    544       this.lblPreviewColumnsVariance.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
    545387      this.lblPreviewColumnsVariance.Name = "lblPreviewColumnsVariance";
    546       this.lblPreviewColumnsVariance.Size = new System.Drawing.Size(398, 17);
     388      this.lblPreviewColumnsVariance.Size = new System.Drawing.Size(301, 13);
    547389      this.lblPreviewColumnsVariance.TabIndex = 2;
    548390      this.lblPreviewColumnsVariance.Text = "{0} columns with a variance smaller than {1} would be deleted.";
    549391      //
     392      // label12
     393      //
     394      this.label12.AutoSize = true;
     395      this.label12.Location = new System.Drawing.Point(6, 22);
     396      this.label12.Name = "label12";
     397      this.label12.Size = new System.Drawing.Size(0, 13);
     398      this.label12.TabIndex = 2;
     399      //
    550400      // tabPreviewDeleteRowsInfo
    551401      //
    552402      this.tabPreviewDeleteRowsInfo.Controls.Add(this.lblPreviewRowsInfo);
    553403      this.tabPreviewDeleteRowsInfo.Location = new System.Drawing.Point(4, 22);
    554       this.tabPreviewDeleteRowsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    555404      this.tabPreviewDeleteRowsInfo.Name = "tabPreviewDeleteRowsInfo";
    556       this.tabPreviewDeleteRowsInfo.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
    557       this.tabPreviewDeleteRowsInfo.Size = new System.Drawing.Size(951, 181);
     405      this.tabPreviewDeleteRowsInfo.Padding = new System.Windows.Forms.Padding(3);
     406      this.tabPreviewDeleteRowsInfo.Size = new System.Drawing.Size(711, 142);
    558407      this.tabPreviewDeleteRowsInfo.TabIndex = 2;
    559408      this.tabPreviewDeleteRowsInfo.Text = "del rows info";
     
    563412      //
    564413      this.lblPreviewRowsInfo.AutoSize = true;
    565       this.lblPreviewRowsInfo.Location = new System.Drawing.Point(4, 4);
    566       this.lblPreviewRowsInfo.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
     414      this.lblPreviewRowsInfo.Location = new System.Drawing.Point(3, 3);
    567415      this.lblPreviewRowsInfo.Name = "lblPreviewRowsInfo";
    568       this.lblPreviewRowsInfo.Size = new System.Drawing.Size(400, 17);
     416      this.lblPreviewRowsInfo.Size = new System.Drawing.Size(301, 13);
    569417      this.lblPreviewRowsInfo.TabIndex = 2;
    570418      this.lblPreviewRowsInfo.Text = "{0} rows with more than {1} % missing values would be deleted";
    571       //
    572       // tabPreviewReplaceMissingValues
    573       //
    574       this.tabPreviewReplaceMissingValues.Controls.Add(this.lblPreviewReplaceMissingValues);
    575       this.tabPreviewReplaceMissingValues.Location = new System.Drawing.Point(4, 22);
    576       this.tabPreviewReplaceMissingValues.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    577       this.tabPreviewReplaceMissingValues.Name = "tabPreviewReplaceMissingValues";
    578       this.tabPreviewReplaceMissingValues.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
    579       this.tabPreviewReplaceMissingValues.Size = new System.Drawing.Size(951, 181);
    580       this.tabPreviewReplaceMissingValues.TabIndex = 6;
    581       this.tabPreviewReplaceMissingValues.Text = "repl missing vals";
    582       this.tabPreviewReplaceMissingValues.UseVisualStyleBackColor = true;
    583       //
    584       // lblPreviewReplaceMissingValues
    585       //
    586       this.lblPreviewReplaceMissingValues.AutoSize = true;
    587       this.lblPreviewReplaceMissingValues.Location = new System.Drawing.Point(4, 4);
    588       this.lblPreviewReplaceMissingValues.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
    589       this.lblPreviewReplaceMissingValues.Name = "lblPreviewReplaceMissingValues";
    590       this.lblPreviewReplaceMissingValues.Size = new System.Drawing.Size(449, 17);
    591       this.lblPreviewReplaceMissingValues.TabIndex = 3;
    592       this.lblPreviewReplaceMissingValues.Text = "{0} cells detected with missing values which would be replaced with {1}";
    593       //
    594       // tabPreviewShuffle
    595       //
    596       this.tabPreviewShuffle.Controls.Add(this.lblPreviewShuffle);
    597       this.tabPreviewShuffle.Location = new System.Drawing.Point(4, 22);
    598       this.tabPreviewShuffle.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    599       this.tabPreviewShuffle.Name = "tabPreviewShuffle";
    600       this.tabPreviewShuffle.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
    601       this.tabPreviewShuffle.Size = new System.Drawing.Size(951, 181);
    602       this.tabPreviewShuffle.TabIndex = 4;
    603       this.tabPreviewShuffle.Text = "shuffle";
    604       this.tabPreviewShuffle.UseVisualStyleBackColor = true;
    605       //
    606       // lblPreviewShuffle
    607       //
    608       this.lblPreviewShuffle.AutoSize = true;
    609       this.lblPreviewShuffle.Location = new System.Drawing.Point(4, 4);
    610       this.lblPreviewShuffle.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
    611       this.lblPreviewShuffle.Name = "lblPreviewShuffle";
    612       this.lblPreviewShuffle.Size = new System.Drawing.Size(337, 17);
    613       this.lblPreviewShuffle.TabIndex = 0;
    614       this.lblPreviewShuffle.Text = "Data will be shuffled randomly - preview not possible";
    615419      //
    616420      // label9
     
    621425      this.label9.TabIndex = 0;
    622426      //
    623       // panel1
    624       //
    625       this.panel1.AutoScroll = true;
    626       this.panel1.Controls.Add(this.lblPreviewColumnsInfo);
    627       this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
    628       this.panel1.Location = new System.Drawing.Point(4, 4);
    629       this.panel1.Name = "panel1";
    630       this.panel1.Size = new System.Drawing.Size(943, 173);
    631       this.panel1.TabIndex = 2;
    632       //
    633       // panel2
    634       //
    635       this.panel2.AutoScroll = true;
    636       this.panel2.Controls.Add(this.lblPreviewColumnsVariance);
    637       this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
    638       this.panel2.Location = new System.Drawing.Point(4, 4);
    639       this.panel2.Name = "panel2";
    640       this.panel2.Size = new System.Drawing.Size(943, 173);
    641       this.panel2.TabIndex = 3;
    642       //
    643427      // ManipulationView
    644428      //
    645       this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
     429      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    646430      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    647431      this.Controls.Add(this.btnApply);
     
    649433      this.Controls.Add(this.grpBoxData);
    650434      this.Controls.Add(this.lstMethods);
    651       this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
    652435      this.Name = "ManipulationView";
    653       this.Size = new System.Drawing.Size(985, 651);
     436      this.Size = new System.Drawing.Size(739, 529);
    654437      this.grpBoxData.ResumeLayout(false);
    655438      this.tabsData.ResumeLayout(false);
     
    662445      this.tabDataDeleteRowsInfo.ResumeLayout(false);
    663446      this.tabDataDeleteRowsInfo.PerformLayout();
    664       this.tabReplaceMissingValues.ResumeLayout(false);
    665       this.tabReplaceMissingValues.PerformLayout();
    666       this.tabDataShuffle.ResumeLayout(false);
    667       this.tabDataShuffle.PerformLayout();
    668447      this.grpBoxPreview.ResumeLayout(false);
    669448      this.tabsPreview.ResumeLayout(false);
     
    671450      this.tabPreviewInactive.PerformLayout();
    672451      this.tabPreviewDeleteColumnsInfo.ResumeLayout(false);
     452      this.panel1.ResumeLayout(false);
     453      this.panel1.PerformLayout();
    673454      this.tabPreviewDeleteColumnsVariance.ResumeLayout(false);
    674455      this.tabPreviewDeleteColumnsVariance.PerformLayout();
     456      this.panel2.ResumeLayout(false);
     457      this.panel2.PerformLayout();
    675458      this.tabPreviewDeleteRowsInfo.ResumeLayout(false);
    676459      this.tabPreviewDeleteRowsInfo.PerformLayout();
    677       this.tabPreviewReplaceMissingValues.ResumeLayout(false);
    678       this.tabPreviewReplaceMissingValues.PerformLayout();
    679       this.tabPreviewShuffle.ResumeLayout(false);
    680       this.tabPreviewShuffle.PerformLayout();
    681       this.panel1.ResumeLayout(false);
    682       this.panel1.PerformLayout();
    683       this.panel2.ResumeLayout(false);
    684       this.panel2.PerformLayout();
    685460      this.ResumeLayout(false);
    686461
     
    697472    private System.Windows.Forms.TabPage tabPreviewDeleteColumnsVariance;
    698473    private System.Windows.Forms.TabPage tabPreviewDeleteRowsInfo;
    699     private System.Windows.Forms.TabPage tabPreviewShuffle;
    700     private System.Windows.Forms.Label lblPreviewShuffle;
    701474    private System.Windows.Forms.TabPage tabPreviewInactive;
    702475    private System.Windows.Forms.Label lblPreviewColumnsInfo;
     
    704477    private System.Windows.Forms.Label lblPreviewColumnsVariance;
    705478    private System.Windows.Forms.Label lblPreviewRowsInfo;
    706     private System.Windows.Forms.TabPage tabPreviewReplaceMissingValues;
    707     private System.Windows.Forms.Label lblPreviewReplaceMissingValues;
    708479    private System.Windows.Forms.Label label9;
    709480    private System.Windows.Forms.TabControl tabsData;
     
    721492    private System.Windows.Forms.TextBox txtDeleteRowsInfo;
    722493    private System.Windows.Forms.Label label5;
    723     private System.Windows.Forms.TabPage tabReplaceMissingValues;
    724     private System.Windows.Forms.TextBox txtReplaceValue;
    725     private System.Windows.Forms.ComboBox cmbReplaceWith;
    726     private System.Windows.Forms.Label lblValueColon;
    727     private System.Windows.Forms.Label label10;
    728     private System.Windows.Forms.TabPage tabDataShuffle;
    729     private System.Windows.Forms.Label lblShuffleProperties;
    730     private System.Windows.Forms.ComboBox cmbVariableNames;
    731     private System.Windows.Forms.Label label8;
    732494    private System.Windows.Forms.Label lblPreviewInActive;
    733     private System.Windows.Forms.CheckBox shuffleSeparatelyCheckbox;
    734495    private System.Windows.Forms.Panel panel1;
    735496    private System.Windows.Forms.Panel panel2;
  • trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/ManipulationView.cs

    r15110 r15518  
    2121
    2222using System;
    23 using System.Collections.Generic;
    2423using System.Drawing;
    2524using System.Globalization;
     
    4443    public ManipulationView() {
    4544      InitializeComponent();
    46       cmbReplaceWith.SelectedIndex = 0;
    4745      tabsData.Appearance = TabAppearance.FlatButtons;
    4846      tabsData.ItemSize = new Size(0, 1);
     
    5654        () => ValidateDeleteColumnsVariance(),
    5755        () => ValidateDeleteRowsInfo(),
    58         () => ValidateReplaceWith(),
    59         () => ValidateShuffle()
    6056      };
    6157
    6258      manipulations = new Action[] {
    63         () => Content.ManipulationLogic.DeleteColumnsWithMissingValuesGreater(GetDeleteColumnsInfo()),
    64         () => Content.ManipulationLogic.DeleteColumnsWithVarianceSmaller(GetDeleteColumnsVariance()),
    65         () => Content.ManipulationLogic.DeleteRowsWithMissingValuesGreater(GetRowsColumnsInfo()),
    66         () => ReplaceMissingValues(),
    67         () => Content.ManipulationLogic.Shuffle(shuffleSeparatelyCheckbox.Checked)
     59        () => Content.DeleteColumnsWithMissingValuesGreater(GetDeleteColumnsInfo()),
     60        () => Content.DeleteColumnsWithVarianceSmaller(GetDeleteColumnsVariance()),
     61        () => Content.DeleteRowsWithMissingValuesGreater(GetRowsColumnsInfo()),
    6862      };
    6963    }
     
    7266      base.OnContentChanged();
    7367      if (Content != null) {
    74         cmbVariableNames.Items.Clear();
    75         foreach (var name in Content.ManipulationLogic.VariableNames) {
    76           cmbVariableNames.Items.Add(name);
    77         }
    78         cmbVariableNames.SelectedIndex = 0;
    7968        CheckFilters();
    8069      }
     
    8372    protected override void RegisterContentEvents() {
    8473      base.RegisterContentEvents();
    85       Content.FilterLogic.FilterChanged += FilterLogic_FilterChanged;
     74      Content.PreprocessingData.FilterChanged += FilterLogic_FilterChanged;
    8675    }
    8776
    8877    protected override void DeregisterContentEvents() {
    89       Content.FilterLogic.FilterChanged -= FilterLogic_FilterChanged;
     78      Content.PreprocessingData.FilterChanged -= FilterLogic_FilterChanged;
    9079      base.DeregisterContentEvents();
    9180    }
     
    9887
    9988    private void CheckFilters() {
    100       if (Content.FilterLogic.IsFiltered) {
     89      if (Content.PreprocessingData.IsFiltered) {
    10190        tabsPreview.SelectedIndex = 0;
    10291        lstMethods.Enabled = false;
     
    126115    }
    127116
    128     private void ReplaceMissingValues() {
    129       var allIndices = Content.SearchLogic.GetMissingValueIndices();
    130       var columnIndex = cmbVariableNames.SelectedIndex;
    131       var columnIndices = new Dictionary<int, IList<int>>{
    132           {columnIndex,   allIndices[columnIndex]}
    133       };
    134 
    135       switch (cmbReplaceWith.SelectedIndex) {
    136         case 0: //Value
    137           Content.ManipulationLogic.ReplaceIndicesByValue(columnIndices, txtReplaceValue.Text);
    138           break;
    139         case 1: //Average
    140           Content.ManipulationLogic.ReplaceIndicesByAverageValue(columnIndices);
    141           break;
    142         case 2: //Median
    143           Content.ManipulationLogic.ReplaceIndicesByMedianValue(columnIndices);
    144           break;
    145         case 3: //Most Common
    146           Content.ManipulationLogic.ReplaceIndicesByMostCommonValue(columnIndices);
    147           break;
    148         case 4: //Random
    149           Content.ManipulationLogic.ReplaceIndicesByRandomValue(columnIndices);
    150           break;
    151       }
    152     }
    153 
    154117    private void ValidateDeleteColumnsInfo() {
    155118      ValidateDoubleTextBox(txtDeleteColumnsInfo.Text);
    156119      if (btnApply.Enabled) {
    157         var filteredColumns = Content.ManipulationLogic.ColumnsWithMissingValuesGreater(GetDeleteColumnsInfo());
     120        var filteredColumns = Content.ColumnsWithMissingValuesGreater(GetDeleteColumnsInfo());
    158121        int count = filteredColumns.Count;
    159         int columnCount = Content.FilterLogic.PreprocessingData.Columns;
     122        int columnCount = Content.PreprocessingData.Columns;
    160123        lblPreviewColumnsInfo.Text = string.Format("{0} column{1} of {2} ({3}) were detected with more than {4}% missing values.", count, (count > 1 || count == 0 ? "s" : ""), columnCount, string.Format("{0:F2}%", 100d / columnCount * count), txtDeleteColumnsInfo.Text);
    161124
     
    165128          sb.Append(Environment.NewLine);
    166129          sb.Append("Columns: ");
    167           sb.Append(Content.SearchLogic.VariableNames.ElementAt(filteredColumns.ElementAt(0)));
     130          sb.Append(Content.PreprocessingData.VariableNames.ElementAt(filteredColumns.ElementAt(0)));
    168131          for (int i = 1; i < filteredColumns.Count; i++) {
    169             string columnName = Content.SearchLogic.VariableNames.ElementAt(filteredColumns.ElementAt(i));
     132            string columnName = Content.PreprocessingData.VariableNames.ElementAt(filteredColumns.ElementAt(i));
    170133            sb.Append(", ");
    171134            sb.Append(columnName);
     
    186149      ValidateDoubleTextBox(txtDeleteColumnsVariance.Text);
    187150      if (btnApply.Enabled) {
    188         var filteredColumns = Content.ManipulationLogic.ColumnsWithVarianceSmaller(GetDeleteColumnsVariance());
     151        var filteredColumns = Content.ColumnsWithVarianceSmaller(GetDeleteColumnsVariance());
    189152        int count = filteredColumns.Count;
    190         int columnCount = Content.FilterLogic.PreprocessingData.Columns;
     153        int columnCount = Content.PreprocessingData.Columns;
    191154        lblPreviewColumnsVariance.Text = string.Format("{0} column{1} of {2} ({3}) were detected with a variance smaller than {4}.", count, (count > 1 || count == 0 ? "s" : ""), columnCount, string.Format("{0:F2}%", 100d / columnCount * count), txtDeleteColumnsVariance.Text);
    192155
     
    196159          sb.Append(Environment.NewLine);
    197160          sb.Append("Columns: ");
    198           sb.Append(Content.SearchLogic.VariableNames.ElementAt(filteredColumns.ElementAt(0)));
     161          sb.Append(Content.PreprocessingData.VariableNames.ElementAt(filteredColumns.ElementAt(0)));
    199162          for (int i = 1; i < filteredColumns.Count; i++) {
    200             string columnName = Content.SearchLogic.VariableNames.ElementAt(filteredColumns.ElementAt(i));
     163            string columnName = Content.PreprocessingData.VariableNames.ElementAt(filteredColumns.ElementAt(i));
    201164            sb.Append(", ");
    202165            sb.Append(columnName);
     
    217180      ValidateDoubleTextBox(txtDeleteRowsInfo.Text);
    218181      if (btnApply.Enabled) {
    219         int count = Content.ManipulationLogic.RowsWithMissingValuesGreater(GetRowsColumnsInfo()).Count;
    220         int rowCount = Content.FilterLogic.PreprocessingData.Rows;
     182        int count = Content.RowsWithMissingValuesGreater(GetRowsColumnsInfo()).Count;
     183        int rowCount = Content.PreprocessingData.Rows;
    221184        lblPreviewRowsInfo.Text = count + " row" + (count > 1 || count == 0 ? "s" : "") + " of " + rowCount + " (" + string.Format("{0:F2}%", 100d / rowCount * count) + ") were detected with more than " + txtDeleteRowsInfo.Text + "% missing values.";
    222185        if (count > 0) {
     
    228191        lblPreviewRowsInfo.Text = "Preview not possible yet - please input the limit above.";
    229192      }
    230     }
    231 
    232     private void ValidateReplaceWith() {
    233       btnApply.Enabled = false;
    234       string replaceWith = (string)cmbReplaceWith.SelectedItem;
    235       int columnIndex = cmbVariableNames.SelectedIndex;
    236 
    237       if (cmbReplaceWith.SelectedIndex == 0) {
    238         string errorMessage;
    239         string replaceValue = txtReplaceValue.Text;
    240         if (string.IsNullOrEmpty(replaceValue)) {
    241           lblPreviewReplaceMissingValues.Text = "Preview not possible yet - please input the text which will be used as replacement.";
    242         } else if (!Content.ManipulationLogic.PreProcessingData.Validate(txtReplaceValue.Text, out errorMessage, columnIndex)) {
    243           lblPreviewReplaceMissingValues.Text = "Preview not possible yet - " + errorMessage;
    244         } else {
    245           btnApply.Enabled = true;
    246         }
    247         replaceWith = "\"" + replaceValue + "\"";
    248       } else {
    249         btnApply.Enabled = true;
    250       }
    251       if (btnApply.Enabled) {
    252         var allIndices = Content.SearchLogic.GetMissingValueIndices();
    253         int count = allIndices[columnIndex].Count;
    254         int cellCount = Content.FilterLogic.PreprocessingData.Rows * Content.FilterLogic.PreprocessingData.Columns;
    255         lblPreviewReplaceMissingValues.Text = count + " cell" + (count > 1 || count == 0 ? "s" : "")
    256           + " of " + cellCount + " (" + string.Format("{0:F2}%", 100d / cellCount * count) + ") were detected with missing values which would be replaced with " + replaceWith;
    257         if (count > 0) {
    258           lblPreviewReplaceMissingValues.Text += Environment.NewLine + Environment.NewLine + "Please press the button \"Apply Manipulation\" if you wish to perform the replacement.";
    259         } else {
    260           btnApply.Enabled = false;
    261         }
    262       }
    263     }
    264 
    265     private void ValidateShuffle() {
    266       btnApply.Enabled = true;
    267       lblShuffleProperties.Enabled = false;
    268       lblShuffleProperties.Visible = false;
    269       shuffleSeparatelyCheckbox.Enabled = true;
    270       shuffleSeparatelyCheckbox.Visible = true;
    271193    }
    272194
     
    295217          lblPreviewRowsInfo.Text = "rows successfully deleted.";
    296218          break;
    297         case 3:
    298           lblPreviewReplaceMissingValues.Text = "missing values successfully replaced.";
    299           btnApply.Enabled = false;
    300           break;
    301         case 4:
    302           lblPreviewShuffle.Text = "dataset shuffled successfully.";
    303           btnApply.Enabled = false;
    304           break;
    305219      }
    306220    }
     
    327241      ValidateDeleteRowsInfo();
    328242    }
    329 
    330     private void cmbReplaceWith_SelectedIndexChanged(object sender, EventArgs e) {
    331       bool isReplaceWithValueSelected = cmbReplaceWith.SelectedIndex == 0;
    332       lblValueColon.Visible = isReplaceWithValueSelected;
    333       txtReplaceValue.Visible = isReplaceWithValueSelected;
    334       ValidateReplaceWith();
    335     }
    336 
    337     private void txtReplaceValue_TextChanged(object sender, EventArgs e) {
    338       ValidateReplaceWith();
    339     }
    340243  }
    341244}
  • trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/StatisticsView.cs

    r15210 r15518  
    8787
    8888    private void UpdateData(Dictionary<string, bool> oldVisibility = null) {
    89       var logic = Content.StatisticsLogic;
    90       rowsTextBox.Text = logic.GetRowCount().ToString();
    91       columnsTextBox.Text = logic.GetColumnCount().ToString();
    92       numericColumnsTextBox.Text = logic.GetNumericColumnCount().ToString();
    93       nominalColumnsTextBox5.Text = logic.GetNominalColumnCount().ToString();
    94       missingValuesTextBox.Text = logic.GetMissingValueCount().ToString();
    95       totalValuesTextBox.Text = (logic.GetColumnCount() * logic.GetRowCount() - logic.GetMissingValueCount()).ToString();
     89      var data = Content.PreprocessingData;
     90      rowsTextBox.Text = data.Rows.ToString();
     91      columnsTextBox.Text = data.Rows.ToString();
     92      numericColumnsTextBox.Text = GetColumnCount<double>().ToString();
     93      nominalColumnsTextBox5.Text = GetColumnCount<string>().ToString();
     94      missingValuesTextBox.Text = data.GetMissingValueCount().ToString();
     95      totalValuesTextBox.Text = (data.Rows * data.Rows - data.GetMissingValueCount()).ToString();
    9696
    9797      var variableNames = Content.PreprocessingData.VariableNames.ToList();
     
    107107        };
    108108
    109       for (int i = 0; i < logic.GetColumnCount(); i++) {
    110         var data = GetStatistics(i);
    111         for (int j = 0; j < data.Count; j++) {
     109      for (int i = 0; i < data.Columns; i++) {
     110        var statistics = GetStatistics(i);
     111        for (int j = 0; j < statistics.Count; j++) {
    112112          if (horizontal)
    113             statisticsMatrix[j, i] = data[j];
     113            statisticsMatrix[j, i] = statistics[j];
    114114          else
    115             statisticsMatrix[i, j] = data[j];
     115            statisticsMatrix[i, j] = statistics[j];
    116116        }
    117117      }
     
    138138    }
    139139
     140    public int GetColumnCount<T>() {
     141      int count = 0;
     142      for (int i = 0; i < Content.PreprocessingData.Columns; ++i) {
     143        if (Content.PreprocessingData.VariableHasType<T>(i)) {
     144          ++count;
     145        }
     146      }
     147      return count;
     148    }
     149
    140150    private List<string> GetStatistics(int varIdx) {
    141151      List<string> list;
    142       var logic = Content.StatisticsLogic;
    143       if (logic.VariableHasType<double>(varIdx)) {
     152      var data = Content.PreprocessingData;
     153      if (data.VariableHasType<double>(varIdx)) {
    144154        list = GetDoubleColumns(varIdx);
    145       } else if (logic.VariableHasType<string>(varIdx)) {
     155      } else if (data.VariableHasType<string>(varIdx)) {
    146156        list = GetStringColumns(varIdx);
    147       } else if (logic.VariableHasType<DateTime>(varIdx)) {
     157      } else if (data.VariableHasType<DateTime>(varIdx)) {
    148158        list = GetDateTimeColumns(varIdx);
    149159      } else {
     
    157167
    158168    private List<string> GetDoubleColumns(int statIdx) {
    159       var logic = Content.StatisticsLogic;
     169      var data = Content.PreprocessingData;
    160170      return new List<string> {
    161         logic.GetColumnTypeAsString(statIdx),
    162         logic.GetMissingValueCount(statIdx).ToString(),
    163         logic.GetMin<double>(statIdx, double.NaN).ToString(),
    164         logic.GetMax<double>(statIdx, double.NaN).ToString(),
    165         logic.GetMedian(statIdx).ToString(),
    166         logic.GetAverage(statIdx).ToString(),
    167         logic.GetStandardDeviation(statIdx).ToString(),
    168         logic.GetVariance(statIdx).ToString(),
    169         logic.GetOneQuarterPercentile(statIdx).ToString(),
    170         logic.GetThreeQuarterPercentile(statIdx).ToString(),
    171         logic.GetMostCommonValue<double>(statIdx, double.NaN).ToString(),
    172         logic.GetDifferentValuesCount<double>(statIdx).ToString()
     171        data.GetVariableType(statIdx).Name,
     172        data.GetMissingValueCount(statIdx).ToString(),
     173        data.GetMin<double>(statIdx, emptyValue: double.NaN).ToString(),
     174        data.GetMax<double>(statIdx, emptyValue: double.NaN).ToString(),
     175        data.GetMedian<double>(statIdx, emptyValue: double.NaN).ToString(),
     176        data.GetMean<double>(statIdx, emptyValue: double.NaN).ToString(),
     177        data.GetStandardDeviation<double>(statIdx, emptyValue: double.NaN).ToString(),
     178        data.GetVariance<double>(statIdx, emptyValue: double.NaN).ToString(),
     179        data.GetQuantile<double>(0.25, statIdx, emptyValue: double.NaN).ToString(),
     180        data.GetQuantile<double>(0.75, statIdx, emptyValue: double.NaN).ToString(),
     181        data.GetMode<double>(statIdx, emptyValue: double.NaN).ToString(),
     182        data.GetDistinctValues<double>(statIdx).ToString()
    173183      };
    174184    }
    175185
    176186    private List<string> GetStringColumns(int statIdx) {
    177       var logic = Content.StatisticsLogic;
     187      var data = Content.PreprocessingData;
    178188      return new List<string> {
    179         logic.GetColumnTypeAsString(statIdx),
    180         logic.GetMissingValueCount(statIdx).ToString(),
    181         "", //min
    182         "", //max
    183         "", //median
     189        data.GetVariableType(statIdx).Name,
     190        data.GetMissingValueCount(statIdx).ToString(),
     191        "", // data.GetMin<string>(statIdx, emptyValue: string.Empty), //min
     192        "", // data.GetMax<string>(statIdx, emptyValue: string.Empty), //max
     193        "", // data.GetMedian<string>(statIdx, emptyValue: string.Empty), //median
    184194        "", //average
    185195        "", //standard deviation
    186196        "", //variance
    187         "", //quarter percentile
    188         "", //three quarter percentile
    189         logic.GetMostCommonValue<string>(statIdx,string.Empty) ?? "",
    190         logic.GetDifferentValuesCount<string>(statIdx).ToString()
     197        "", // data.GetQuantile<string>(0.25, statIdx, emptyValue: string.Empty), //quarter percentile
     198        "", // data.GetQuantile<string>(0.75, statIdx, emptyValue: string.Empty), //three quarter percentile
     199        data.GetMode<string>(statIdx, emptyValue: string.Empty),
     200        data.GetDistinctValues<string>(statIdx).ToString()
    191201      };
    192202    }
    193203
    194204    private List<string> GetDateTimeColumns(int statIdx) {
    195       var logic = Content.StatisticsLogic;
     205      var data = Content.PreprocessingData;
    196206      return new List<string> {
    197         logic.GetColumnTypeAsString(statIdx),
    198         logic.GetMissingValueCount(statIdx).ToString(),
    199         logic.GetMin<DateTime>(statIdx, DateTime.MinValue).ToString(),
    200         logic.GetMax<DateTime>(statIdx, DateTime.MinValue).ToString(),
    201         logic.GetMedianDateTime(statIdx).ToString(),
    202         logic.GetAverageDateTime(statIdx).ToString(),
    203         logic.GetStandardDeviation(statIdx).ToString(),
    204         logic.GetVariance(statIdx).ToString(),
    205         logic.GetOneQuarterPercentile(statIdx).ToString(),
    206         logic.GetThreeQuarterPercentile(statIdx).ToString(),
    207         logic.GetMostCommonValue<DateTime>(statIdx, DateTime.MinValue).ToString(),
    208         logic.GetDifferentValuesCount<DateTime>(statIdx).ToString()
     207        data.GetVariableType(statIdx).Name,
     208        data.GetMissingValueCount(statIdx).ToString(),
     209        data.GetMin<DateTime>(statIdx).ToString(),
     210        data.GetMax<DateTime>(statIdx).ToString(),
     211        data.GetMedian<DateTime>(statIdx).ToString(),
     212        data.GetMean<DateTime>(statIdx).ToString(),
     213        "", // should be of type TimeSpan //data.GetStandardDeviation<DateTime>(statIdx).ToString(),
     214        "", // should be of type TimeSpan //data.GetVariance<DateTime>(statIdx).ToString(),
     215        data.GetQuantile<DateTime>(0.25, statIdx).ToString(),
     216        data.GetQuantile<DateTime>(0.75, statIdx).ToString(),
     217        data.GetMode<DateTime>(statIdx).ToString(),
     218        data.GetDistinctValues<DateTime>(statIdx).ToString()
    209219      };
    210220    }
  • trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/TransformationView.cs

    r15110 r15518  
    5151
    5252    protected override void RegisterContentEvents() {
    53       Content.FilterLogic.FilterChanged += FilterLogic_FilterChanged;
     53      Content.PreprocessingData.FilterChanged += FilterLogic_FilterChanged;
    5454    }
    5555
    5656    protected override void DeregisterContentEvents() {
    57       Content.FilterLogic.FilterChanged -= FilterLogic_FilterChanged;
     57      Content.PreprocessingData.FilterChanged -= FilterLogic_FilterChanged;
    5858    }
    5959
     
    6565
    6666    private void CheckFilters() {
    67       if (Content.FilterLogic.IsFiltered) {
     67      if (Content.PreprocessingData.IsFiltered) {
    6868        applyButton.Enabled = false;
    6969        lblFilterNotice.Visible = true;
     
    8282      }
    8383
    84       var transformator = new PreprocessingTransformator(Content.Data);
     84      var transformator = new PreprocessingTransformator(Content.PreprocessingData);
    8585      bool preserve = preserveColumnsCheckbox.CheckState == CheckState.Checked;
    8686      string errorMsg;
  • trunk/sources/HeuristicLab.DataPreprocessing.Views/3.4/ViewShortcutListView.cs

    r15110 r15518  
    4242    //Clone chart items
    4343    protected override void itemsListView_DoubleClick(object sender, EventArgs e) {
    44       if (itemsListView.SelectedItems.Count == 1) {
    45         IViewShortcut item = itemsListView.SelectedItems[0].Tag as IViewShortcut;
    46         if (item != null) {
    47           try {
    48             item = (IViewShortcut)item.Clone();
    49             var view = MainFormManager.MainForm.ShowContent(item);
    50             if (view != null) {
    51               view.ReadOnly = ReadOnly;
    52               view.Locked = Locked;
    53             }
    54           } catch (NullReferenceException) {
    55             // cloning for preprocessing not done properly yet
    56           }
     44      if (itemsListView.SelectedItems.Count != 1) return;
     45      IViewShortcut item = itemsListView.SelectedItems[0].Tag as IViewShortcut;
     46      if (item == null) return;
     47      try {
     48        item = (IViewShortcut)item.Clone();
     49        var view = MainFormManager.MainForm.ShowContent(item);
     50        if (view != null) {
     51          view.ReadOnly = ReadOnly;
     52          view.Locked = Locked;
    5753        }
     54      } catch (NullReferenceException) {
     55        // cloning for preprocessing not done properly yet
    5856      }
    5957    }
Note: See TracChangeset for help on using the changeset viewer.