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); } }); }
/// <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); } }); }