Пример #1
0
        private void btCountAverage_Click(object sender, EventArgs e)
        {
            lbAnResult.Visible = true;
            int smbnubmer = 10;

            if (textBox4.Text != "")
            {
                try
                {
                    smbnubmer = int.Parse(textBox4.Text);
                }
                catch (Exception)
                {
                }
            }
            int[] res = new int[smbnubmer];
            try
            {
                res             = HMM_PSM.GetOutputSequenceFromZero(label6.Text, smbnubmer);
                lbAnResult.Text = HMM_PSM.AverageErrorProbability(res).ToString();
            }
            catch (Exception)
            {
                MessageBox.Show("Желаемая длина последовательности превышает размер файла");
                return;
            }
        }
Пример #2
0
 public List <SequenceObject> getSequencesList(int sequenceSize)
 {
     if (this.sequencesFolderPath == null)
     {
         return(null);
     }
     try
     {
         string[] files = Directory.GetFiles(this.sequencesFolderPath);
         if (files == null && files.Length == 0)
         {
             return(null);
         }
         List <SequenceObject> result = new List <SequenceObject>();
         for (int i = 0; i <= files.Length; i++)
         {
             try
             {//Может вылететь если последовательность в файле недостаточной длины
                 int[] seq = HMM_PSM.GetOutputSequence(files[i], sequenceSize);
                 result.Add(new SequenceObject(files[i], seq));
             }
             catch
             {
                 //TODO do smth or change try to if
             }
         }
         return(result);
     }
     catch
     {
         return(null);
     }
 }
Пример #3
0
        public void AverageErrorProbabilityTest()
        {
            int[]  res      = null; // TODO: инициализация подходящего значения
            double expected = 0F;   // TODO: инициализация подходящего значения
            double actual;

            actual = HMM_PSM.AverageErrorProbability(res);
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Проверьте правильность этого метода теста.");
        }
Пример #4
0
        public void LikelihoodExtended1Test()
        {
            HMM_QPN Model = null;   // TODO: инициализация подходящего значения

            int[]  O        = null; // TODO: инициализация подходящего значения
            double expected = 0F;   // TODO: инициализация подходящего значения
            double actual;

            actual = HMM_PSM.LikelihoodExtended1(Model, O);
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Проверьте правильность этого метода теста.");
        }
Пример #5
0
        public void LikelihoodExtendedTest()
        {
            HMM_QPN Model = new HMM_QPN("F:/аспирантура/Programs/10.12.12/HSMPQApplication/M_1.txt");

            int[]  O        = { 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0 }; // TODO: инициализация подходящего значения
            double expected = 0F;                                                             // TODO: инициализация подходящего значения
            double actual;

            actual = HMM_PSM.LikelihoodExtended(Model, O);
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Проверьте правильность этого метода теста.");
        }
Пример #6
0
        private void btOMCCalculateProbability_Click(object sender, EventArgs e)
        {
            if (lbOMCModelPath.Text != "" && lbOMCSequencePath.Text != "" && tbOMCSegmentLength.Text != "" && tbOMCSequenceLength.Text != "")
            {
                int     segmentSize    = Int32.Parse(tbOMCSegmentLength.Text);  //добавить проверку
                int     sequenceLength = Int32.Parse(tbOMCSequenceLength.Text); //добавить проверку
                HMM_QPN Model          = new HMM_QPN(lbOMCModelPath.Text);
                if (Model.IsCorrect() == 1)
                {
                    int[] res = new int[sequenceLength + 1];
                    try
                    {
                        res = HMM_PSM.GetOutputSequence(lbOMCSequencePath.Text, sequenceLength);
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Желаемая длина последовательности превышает размер файла");
                        return;
                    }
                    ModelObject         model         = new ModelObject(lbOMCModelPath.Text, Model);
                    SequenceObject      sequence      = new SequenceObject(lbOMCSequencePath.Text, res);
                    OneModelComputation computor      = new OneModelComputation(model, sequence, segmentSize, sequenceLength);
                    List <double>       probabilities = computor.compute();

                    string s = "Model: " + model.ModelName + "\r\n Sequence: " + sequence.SequenceName + "\r\n Sequence length: " + sequenceLength + "\r\n Segment size: " + segmentSize + "\r\n";
                    for (int i = 0; i < probabilities.Count(); i++)
                    {
                        s += probabilities.ElementAt(i) + ",";
                    }
                    OutStreamer os = new OutStreamer("omc.txt", FileOpenMode.RewriteMode);

                    os.StringToFile(s);
                    if (saveFileDialogExperiment.ShowDialog() == DialogResult.OK)
                    {
                        StreamReader f   = File.OpenText("omc.txt");
                        string       Buf = f.ReadToEnd();
                        StreamWriter sw  = new StreamWriter(File.Create(saveFileDialogExperiment.FileName));
                        sw.Write(Buf);
                        sw.Close();
                        f.Close();
                    }
                }
                else
                {
                    MessageBox.Show("Модель некорректна");
                }
            }
            else
            {
                MessageBox.Show("Не все параметры заданы");
            }
        }
Пример #7
0
        public void GetOutputSequenceTest()
        {
            string filename = "H:/аспирантура/Programs/10.12.12/HSMPQApplication/1.txt"; // TODO: инициализация подходящего значения
            int    length   = 5;                                                         // TODO: инициализация подходящего значения

            int[] expected = { 0, 0, 0, 0, 0 };                                          // TODO: инициализация подходящего значения
            int[] actual;
            actual = HMM_PSM.GetOutputSequence(filename, length);
            for (int i = 0; i < actual.Length; i++)
            {
                Assert.AreEqual(expected[i], actual[i]);
            }
        }
Пример #8
0
        private void btCalculateFerguson_Click(object sender, EventArgs e)
        {
            FergusonModel Model = new FergusonModel(lbModelFerguson.Text);

            if (Model.IsCorrect() == 1)
            {
                int smbnubmer = 10;
                if (tbSequenceLengthFerguson.Text != "")
                {
                    try
                    {
                        smbnubmer = int.Parse(tbSequenceLengthFerguson.Text);
                    }
                    catch (Exception)
                    {
                    }
                }
                ;
                int[] res = new int[smbnubmer + 1];
                try
                {
                    res = HMM_PSM.GetOutputSequence(lbSequenceFerguson.Text, smbnubmer);
                }
                catch (Exception)
                {
                    MessageBox.Show("Желаемая длина последовательности превышает размер файла");
                    return;
                }
                panel3.Enabled = false;

                LikelihoodFerguson lk = new LikelihoodFerguson(res, Model);
                tbProbabilityFerguson.Text = lk.FullProbability(res.Length - 1).ToString();
                // tbProbabilityFerguson.Text = lk.Probability(res.Length - 1).ToString();
                string s = "";
                for (int i = 0; i < lk.alpha.GetLength(0); i++)
                {
                    for (int j = 0; j < lk.alpha.GetLength(1); j++)
                    {
                        for (int k = 0; k < lk.alpha.GetLength(2); k++)
                        {
                            s += "alpha(" + i + ", " + j + ", " + k + ")=" + lk.alpha[i, j, k].ToString() + "\r\n";
                        }
                    }
                }
                tbAlphaFerg.Text = s;
            }
            else
            {
                MessageBox.Show("Модель задана некорректно");
            }
        }
Пример #9
0
        public void SymbolFinalProbabilityTest()
        {
            HMM_QPN Model    = null; // TODO: инициализация подходящего значения
            double  fi       = 0F;   // TODO: инициализация подходящего значения
            int     d        = 0;    // TODO: инициализация подходящего значения
            int     i        = 0;    // TODO: инициализация подходящего значения
            int     symbol   = 0;    // TODO: инициализация подходящего значения
            double  expected = 0F;   // TODO: инициализация подходящего значения
            double  actual;

            actual = HMM_PSM.SymbolFinalProbability(Model, fi, d, i, symbol);
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Проверьте правильность этого метода теста.");
        }
Пример #10
0
        private void CountProbBtn_Click(object sender, EventArgs e)
        {
            HMM_QPN Model = new HMM_QPN(label1.Text);

            if (Model.IsCorrect() == 1)
            {
                int smbnubmer = 10;
                if (textBox2.Text != "")
                {
                    try
                    {
                        smbnubmer = int.Parse(textBox2.Text);
                    }
                    catch (Exception)
                    {
                    }
                }
                ;
                int[] res = new int[smbnubmer + 1];
                try
                {
                    res = HMM_PSM.GetOutputSequence(label2.Text, smbnubmer);
                }
                catch (Exception)
                {
                    MessageBox.Show("Желаемая длина последовательности превышает размер файла");
                    return;
                }
                panel3.Enabled = false;

                if (radioButton1.Checked)
                {
                    //try
                    //{
                    Likelihood lk = new Likelihood(res, Model);
                    //label3.Text = lk.Probability(res.Length - 1).ToString();
                    label3.Text = lk.FullProbability(res.Length - 1).ToString();

                    //}
                    //catch (Exception)
                    //    { MessageBox.Show("В процессе расчета возникла ошибка!"); };
                    panel3.Enabled = true;
                }
                else
                {
                    if (radioButton2.Checked)
                    {
                        LikelihoodSimple lk = new LikelihoodSimple(res, Model);
                        //label3.Text = lk.Probability(res.Length - 1).ToString();
                        label3.Text    = lk.Probability(res.Length - 1).ToString();
                        panel3.Enabled = true;
                    }
                    else
                    {
                        if (tbSegmentNumber.Text != "")
                        {
                            int segment_size = 0;
                            if (Int32.TryParse(tbSegmentNumber.Text, out segment_size))
                            {
                                LikelihoodSplit ls     = new LikelihoodSplit(segment_size);
                                double []       result = ls.calculateSplitedLikelihood(Model, res);
                                double          total  = 0;
                                tbSplitResultDetails.Text = "";
                                for (int i = 0; i < result.Length; i++)
                                {
                                    tbSplitResultDetails.Text += "P[O(" + i * segment_size + "," + ((i + 1) * segment_size) + ")] = " + result[i] + "\r\n";
                                    total += result[i];
                                }
                                label3.Text    = (total / result.Length).ToString();
                                panel3.Enabled = true;
                            }
                            else
                            {
                                MessageBox.Show("Размер сегмента разбиения должен быть целым");
                            }
                        }
                        else
                        {
                            MessageBox.Show("Задайте размер сегмента разбиения");
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show("Модель задана некорректно");
            }
        }