private void GenerateBtn_Click(object sender, EventArgs e) { HMM_QPN Model = new HMM_QPN(filestr); int seq_length; if (int.TryParse(textBox3.Text, out seq_length)) { if (Model.IsCorrect() == 1) { panel1.Enabled = false; textBox1.Enabled = false; DateTime startTime = DateTime.Now; DateTime endTime; Model.StartGenerator(seq_length, HSMPQApplication.Mode.Release, HSMPQApplication.PRNGMode.Random); endTime = DateTime.Now; TimeSpan employedTime = endTime - startTime; lbEmployedTime.Text = "Время, затраченное на генерацию " + employedTime.ToString(); panel1.Enabled = true; textBox1.Enabled = true; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { StreamReader f = File.OpenText("res.txt"); string Buf = f.ReadToEnd(); StreamWriter sw = new StreamWriter(File.Create(saveFileDialog1.FileName)); sw.Write(Buf); sw.Close(); f.Close(); } } else if (Model.IsCorrect() == 3) { MessageBox.Show("Для параметров не выполняются необходимые условия стохастичности"); } else if (Model.IsCorrect() == 4) { MessageBox.Show("Для параметров не выполняются необходимые условия адаптированности"); } else if (Model.IsCorrect() == 0) { MessageBox.Show("Размерности вводимых параметров не соответствуют"); } else if (Model.IsCorrect() == 2) { MessageBox.Show("Не все параметры заданы"); } } else { MessageBox.Show("Введите длину последовательости ошибок"); } }
public void IsCorrectTest() { string filename = string.Empty; // TODO: инициализация подходящего значения HMM_QPN target = new HMM_QPN(filename); // TODO: инициализация подходящего значения int expected = 0; // TODO: инициализация подходящего значения int actual; actual = target.IsCorrect(); Assert.AreEqual(expected, actual); Assert.Inconclusive("Проверьте правильность этого метода теста."); }
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("Не все параметры заданы"); } }
public List <ModelObject> getModelsList() { if (this.modelsFolderPath == null) { return(null); } try { string[] files = Directory.GetFiles(this.modelsFolderPath); if (files == null && files.Length == 0) { return(null); } List <ModelObject> result = new List <ModelObject>(); for (int i = 0; i <= files.Length; i++) { try { HMM_QPN Model = new HMM_QPN(files[i]); if (Model.IsCorrect() == 1) { result.Add(new ModelObject(files[i], Model)); } } catch { //TODO do smth or change try to if } } return(result); } catch { return(null); } }
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("Модель задана некорректно"); } }