private void LoadNeuralNetworkModelButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var fileDialog = new OpenFileDialog();
                fileDialog.DefaultExt = ".nnm";
                fileDialog.Filter     = "Neural network model (.nnm)|*.nnm";

                if (fileDialog.ShowDialog() == true)
                {
                    SetStatus("Загрузка нейросетевой модели...");
                    NeuralNetworkModelFileName = Path.GetFileName(fileDialog.FileName);

                    DetectionEngine.LoadNeuralNetworkModelFromFile(fileDialog.FileName);

                    UpdateInterface();
                }
            }
            catch (Exception exception)
            {
                ShowException(exception, $"Ошибка при попытке загрузки нейросетевой модели. Убедитесь, что файл имеет корректный формат.");
            }

            SetStatus("");
        }
        private void LoadStatisticsModelButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var fileDialog = new OpenFileDialog();
                fileDialog.DefaultExt = ".sm";
                fileDialog.Filter     = "Statistics model (.sm)|*.sm";

                if (fileDialog.ShowDialog() == true)
                {
                    SetStatus("Загрузка статистической модели...");
                    StatisticsModelFileName = Path.GetFileName(fileDialog.FileName);

                    DetectionEngine.LoadStatisticsModelFromFile(fileDialog.FileName);

                    UpdateInterface();
                }
            }
            catch (Exception exception)
            {
                ShowException(exception, $"Ошибка при попытке загрузки статистической модели. Убедитесь, что файл имеет корректный формат.");
            }

            SetStatus("");
        }
        private void LoadFromFileButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var fileDialog = new OpenFileDialog();

                if (fileDialog.ShowDialog() == true)
                {
                    SetStatus("Загрузка данных...");
                    _testingSetFileName = Path.GetFileName(fileDialog.FileName);

                    DetectionEngine.LoadDataFromFile(fileDialog.FileName);

                    FeatureComboBox.Items.Clear();
                    FeatureComboBox.Items.Add("Все параметры");
                    foreach (var featureName in DetectionEngine.Features)
                    {
                        FeatureComboBox.Items.Add(featureName);
                    }
                    FeatureComboBox.SelectedIndex = 0;

                    UpdateSampleInfo();
                    UpdateInterface();
                }
            }
            catch (Exception exception)
            {
                ShowException(exception, $"Ошибка при попытке загрузки файла. Убедитесь, что файл имеет корректный формат.");
            }

            SetStatus("");
        }
        private void FischerDispersionCheckBox_Unchecked(object sender, RoutedEventArgs e)
        {
            if (!_isInitialized)
            {
                return;
            }

            DetectionEngine.SelectStatisticsAlgorythms(CochraneCoxApproximationsCheckBox.IsChecked == true, FischerApproximationsCheckBox.IsChecked == true, false);
        }
        public MainWindow()
        {
            DetectionEngine             = new DetectionEngine();
            _statisticsSearchResults    = new List <string>();
            _neuralNetworkSearchResults = new List <string>();

            InitializeComponent();

            DetectionEngine.SelectStatisticsAlgorythms(CochraneCoxApproximationsCheckBox.IsChecked == true, FischerApproximationsCheckBox.IsChecked == true, FischerDispersionCheckBox.IsChecked == true);

            _isInitialized = true;

            UpdateInterface();
        }
        private void SaveNeuralNetworkResultButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var fileDialog = new SaveFileDialog();
                fileDialog.DefaultExt = ".txt";
                fileDialog.FileName   = $"{DateTime.Now.ToString("dd_MM_yyyy_HH_mm_ss")}_neural_network_anomaly_detection_result.txt";

                if (fileDialog.ShowDialog() == true)
                {
                    SetStatus("Сохранение результатов...");

                    DetectionEngine.SaveNeuralNetworkResult(fileDialog.FileName);
                }
            }
            catch (Exception exception)
            {
                ShowException(exception, "Ошибка при попытке сохранения файла.");
            }

            SetStatus("");
        }
        private void SeachAnomaliesByNeuralNetworkButton_Click(object sender, RoutedEventArgs e)
        {
            SetStatus("Поиск аномалий...");

            try
            {
                _neuralNetworkSearchResults = DetectionEngine.SearchAnomaliesByNeuralNetwork();

                NeuralNetworkSearchResultTextBox.IsEnabled = true;
                SaveNeuralNetworkResultButton.IsEnabled    = true;
            }
            catch (Exception exception)
            {
                NeuralNetworkSearchResultTextBox.IsEnabled = false;
                SaveNeuralNetworkResultButton.IsEnabled    = false;

                ShowException(exception, "Ошибка при поиске аномалий. Проверьте корректность загруженной модели и исследуемых данных.");
            }

            UpdateNeuralNetworkResults();

            SetStatus("");
        }