private void UpdateVariableImpacts()
        {
            if (Content == null || replacementComboBox.SelectedIndex < 0 ||
                factorVarReplComboBox.SelectedIndex < 0 ||
                dataPartitionComboBox.SelectedIndex < 0)
            {
                return;
            }
            var mainForm = (MainForm.WindowsForms.MainForm)MainFormManager.MainForm;

            variableImactsArrayView.Caption = Content.Name + " Variable Impacts";
            var replMethod =
                (RegressionSolutionVariableImpactsCalculator.ReplacementMethodEnum)
                replacementComboBox.Items[replacementComboBox.SelectedIndex];
            var factorReplMethod =
                (RegressionSolutionVariableImpactsCalculator.FactorReplacementMethodEnum)
                factorVarReplComboBox.Items[factorVarReplComboBox.SelectedIndex];
            var dataPartition =
                (RegressionSolutionVariableImpactsCalculator.DataPartitionEnum)dataPartitionComboBox.SelectedItem;

            Task.Factory.StartNew(() => {
                try {
                    mainForm.AddOperationProgressToView(this, "Calculating variable impacts for " + Content.Name);

                    var impacts                     = RegressionSolutionVariableImpactsCalculator.CalculateImpacts(Content, dataPartition, replMethod, factorReplMethod);
                    var impactArray                 = new DoubleArray(impacts.Select(i => i.Item2).ToArray());
                    impactArray.ElementNames        = impacts.Select(i => i.Item1);
                    variableImactsArrayView.Content = (DoubleArray)impactArray.AsReadOnly();
                } finally {
                    mainForm.RemoveOperationProgressFromView(this);
                }
            });
        }
Example #2
0
        /// <summary>
        /// Updates the <see cref="variableImpactsArrayView"/> according to the selected ordering <see cref="ascendingCheckBox"/> of the selected Column <see cref="sortByComboBox"/>
        /// The default is "Descending" by "VariableImpact" (as in previous versions)
        /// </summary>
        private void UpdateOrdering()
        {
            //Check if valid sortingCriteria is selected and data exists
            if (sortByComboBox.SelectedIndex == -1)
            {
                return;
            }
            if (rawVariableImpacts == null)
            {
                return;
            }
            if (!rawVariableImpacts.Any())
            {
                return;
            }

            var  selectedItem = (SortingCriteria)sortByComboBox.SelectedItem;
            bool ascending    = ascendingCheckBox.Checked;

            IEnumerable <Tuple <string, double> > orderedEntries = null;

            //Sort accordingly
            switch (selectedItem)
            {
            case SortingCriteria.ImpactValue:
                orderedEntries = rawVariableImpacts.OrderBy(v => v.Item2);
                break;

            case SortingCriteria.Occurrence:
                orderedEntries = rawVariableImpacts;
                break;

            case SortingCriteria.VariableName:
                orderedEntries = rawVariableImpacts.OrderBy(v => v.Item1, new NaturalStringComparer());
                break;

            default:
                throw new NotImplementedException("Ordering for selected SortingCriteria not implemented");
            }

            if (!ascending)
            {
                orderedEntries = orderedEntries.Reverse();
            }

            //Write the data back
            var impactArray = new DoubleArray(orderedEntries.Select(i => i.Item2).ToArray())
            {
                ElementNames = orderedEntries.Select(i => i.Item1)
            };

            //Could be, if the View was closed
            if (!variableImpactsArrayView.IsDisposed)
            {
                variableImpactsArrayView.Content = (DoubleArray)impactArray.AsReadOnly();
            }
        }
    protected virtual void btnImpactCalculation_Click(object sender, EventArgs e) {
      var mainForm = (MainForm.WindowsForms.MainForm)MainFormManager.MainForm;
      var view = new StringConvertibleArrayView();
      view.Caption = Content.Name + " Variable Impacts";
      view.Show();

      Task.Factory.StartNew(() => {
        try {
          mainForm.AddOperationProgressToView(view, "Calculating variable impacts for " + Content.Name);

          var impacts = RegressionSolutionVariableImpactsCalculator.CalculateImpacts(Content);
          var impactArray = new DoubleArray(impacts.Select(i => i.Item2).ToArray());
          impactArray.ElementNames = impacts.Select(i => i.Item1);
          view.Content = (DoubleArray)impactArray.AsReadOnly();
        }
        finally {
          mainForm.RemoveOperationProgressFromView(view);
        }
      });
    }
        protected virtual void btnImpactCalculation_Click(object sender, EventArgs e)
        {
            var mainForm = (MainForm.WindowsForms.MainForm)MainFormManager.MainForm;
            var view     = new StringConvertibleArrayView();

            view.Caption = Content.Name + " Variable Impacts";
            view.Show();

            Task.Factory.StartNew(() => {
                try {
                    mainForm.AddOperationProgressToView(view, "Calculating variable impacts for " + Content.Name);

                    var impacts              = RegressionSolutionVariableImpactsCalculator.CalculateImpacts(Content);
                    var impactArray          = new DoubleArray(impacts.Select(i => i.Item2).ToArray());
                    impactArray.ElementNames = impacts.Select(i => i.Item1);
                    view.Content             = (DoubleArray)impactArray.AsReadOnly();
                }
                finally {
                    mainForm.RemoveOperationProgressFromView(view);
                }
            });
        }