/// <summary>
        /// Buttons the recognize click.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        private void ButtonRecognizeClick(object sender, EventArgs e)
        {
            if (helper == null)
            {
                return;
            }

            var neuronHelper = new NeuronHelper();

            var picture = new PictureContainer(picturePath, 10);

            var vector = neuronHelper.ConvertToVector(picture);

            var percentage = helper.Recognize(vector);

            textBoxA.Text = Math.Abs(percentage[0]).ToString(CultureInfo.InvariantCulture);
            textBoxB.Text = Math.Abs(percentage[1]).ToString(CultureInfo.InvariantCulture);
            textBoxC.Text = Math.Abs(percentage[2]).ToString(CultureInfo.InvariantCulture);

            picture.Picture.Dispose();
        }
        /// <summary>
        /// Gets the vector container.
        /// </summary>
        /// <param name="pathA1">The path a1.</param>
        /// <param name="pathA2">The path a2.</param>
        /// <param name="pathA3">The path a3.</param>
        /// <param name="pathB1">The path b1.</param>
        /// <param name="pathB2">The path b2.</param>
        /// <param name="pathB3">The path b3.</param>
        /// <param name="pathC1">The path c1.</param>
        /// <param name="pathC2">The path c2.</param>
        /// <param name="pathC3">The path c3.</param>
        /// <param name="neuronHelper">The helper.</param>
        /// <returns></returns>
        private VectorsContainer GetVectorContainer(String pathA1, String pathA2, String pathA3,
                                                    String pathB1, String pathB2, String pathB3, 
                                                    String pathC1, String pathC2, String pathC3, 
                                                    NeuronHelper neuronHelper)
        {
            var vectorA1 = neuronHelper.ConvertToVector(new PictureContainer(pathA1, 10));
            var vectorA2 = neuronHelper.ConvertToVector(new PictureContainer(pathA2, 10));
            var vectorA3 = neuronHelper.ConvertToVector(new PictureContainer(pathA3, 10));
            var vectorB1 = neuronHelper.ConvertToVector(new PictureContainer(pathB1, 10));
            var vectorB2 = neuronHelper.ConvertToVector(new PictureContainer(pathB2, 10));
            var vectorB3 = neuronHelper.ConvertToVector(new PictureContainer(pathB3, 10));
            var vectorC1 = neuronHelper.ConvertToVector(new PictureContainer(pathC1, 10));
            var vectorC2 = neuronHelper.ConvertToVector(new PictureContainer(pathC2, 10));
            var vectorC3 = neuronHelper.ConvertToVector(new PictureContainer(pathC3, 10));

            return new VectorsContainer(vectorA1, vectorA2, vectorA3,
                                        vectorB1, vectorB2, vectorB3,
                                        vectorC1, vectorC2, vectorC3);
        }
        /// <summary>
        /// Buttons the statistics click.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        private void ButtonStatisticsClick(object sender, EventArgs e)
        {
            if (picturePath == null)
            {
                MessageBox.Show(Resources.ApplicationForm_ButtonStatisticsClick_Choose_picture_);
                return;
            }

            var helper = new NeuronHelper();

            var picture = new PictureContainer(picturePath, 13);

            var vector = helper.ConvertToVector(picture);

            var network = new HopfieldNetwork();

            var thread = new Thread(() => ChooseCorrectVector(network, vector), 214748364);

            thread.Start();

            thread.Join();

            picture.Picture.Dispose();
        }
        /// <summary>
        /// Gets the vector container.
        /// </summary>
        /// <param name="pathA">The path aggregate.</param>
        /// <param name="pathB">The path attribute.</param>
        /// <param name="pathC">The path asynchronous.</param>
        /// <param name="neuronHelper">The helper.</param>
        /// <returns></returns>
        private VectorsContainer GetVectorContainer(String pathA, String pathB, String pathC, NeuronHelper neuronHelper)
        {
            var vectorA = neuronHelper.ConvertToVector(new PictureContainer(pathA, 10));
            var vectorB = neuronHelper.ConvertToVector(new PictureContainer(pathB, 10));
            var vectorC = neuronHelper.ConvertToVector(new PictureContainer(pathC, 10));

            return new VectorsContainer(vectorA, vectorB, vectorC);
        }
        /// <summary>
        /// Buttons the teach click.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        private void ButtonTeachClick(object sender, EventArgs e)
        {
            var helper = new NeuronHelper();

            var picture = new PictureContainer(PicturesPath.PathToOriginalA, 13);
            NeuronHelper.VectorA = helper.ConvertToVector(picture);
            var matrixA = helper.CreateMatrix(NeuronHelper.VectorA);

            picture = new PictureContainer(PicturesPath.PathToOriginalB, 13);
            NeuronHelper.VectorB = helper.ConvertToVector(picture);
            var matrixB = helper.CreateMatrix(NeuronHelper.VectorB);

            picture = new PictureContainer(PicturesPath.PathToOriginalC, 13);
            NeuronHelper.VectorC = helper.ConvertToVector(picture);
            var matrixC = helper.CreateMatrix(NeuronHelper.VectorC);

            HopfieldNetwork.MatrixW = helper.CreateCoefficientsMatrix(matrixA, matrixB, matrixC);

            textBoxStatistics.Text += @"Network has been taught." + Environment.NewLine;
            ScrollTextBox();
        }