/// <summary> /// worker_RunWorkerCompleted /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { // new score calculation double newScore = ORF.CPBcalculator(optimizedORF); //new orf to display textBox.Text = newScore.ToString(); optimizedORF.Insert(0, textBox.Text); Data.Rows.Add(optimizedORF.ToArray()); OptimizationDataGrid.ItemsSource = Data.DefaultView; SaveToFASTAButton.IsEnabled = true; //max score Textbox update if (MaximalizeRadioButton.IsChecked == true) { maxScores.Add(newScore); BestMaxCPBscoreTextBox.Text = maxScores.Max().ToString(); } //min score Textbox update if (MinimalizeRadioButton.IsChecked == true) { minScores.Add(newScore); BestMinCPBscoreTextBox.Text = minScores.Min().ToString(); } NcScoreOptimizedTextBox.Text = ORF.NcCalculator(optimizedORF, ORF.aminoAcidCounts).ToString(); }
/// <summary> /// Method for calculating and displaying /// </summary> /// <param name="orf"></param> /// <param name="amino"></param> private void CalculateAndDisplayORF(List <string> orf, List <string> amino) { Data = new DataTable(); int columnIdx = 0; Data.Columns.Add(new DataColumn("CPB")); foreach (var k in ORF.aminoORFseq) { Data.Columns.Add(new DataColumn(columnIdx.ToString())); columnIdx++; } // CPBcalculator method initialization try { OriginalCPBscoreTextBox.Text = ORF.CPBcalculator(ORF.orfSeq).ToString(); // datagrid filling ORF.aminoORFseq.Insert(0, ""); ORF.orfSeq.Insert(0, OriginalCPBscoreTextBox.Text); Data.Rows.Add(ORF.aminoORFseq.ToArray()); Data.Rows.Add(ORF.orfSeq.ToArray()); ORF.aminoORFseq.RemoveAt(0); ORF.orfSeq.RemoveAt(0); OptimizationDataGrid.ItemsSource = Data.DefaultView; GeneticCode.UploadGeneticCode(); ORF.aminoAcidCounts = ORF.aminoORFseq.GroupBy(i => i) .ToDictionary(i => i.Key, i => i.Count()); NcScoreTextBox.Text = ORF.NcCalculator(ORF.orfSeq, ORF.aminoAcidCounts).ToString(); } catch { string message = "Something went wrong. Please verify your FASTA file for incorrect codons or check your ranking."; ModernDialog.ShowMessage(message.ToString(), "Error", MessageBoxButton.OK); } }
public string RunPrefMRF(double regularization, double learnRate, int maxEpoch, List <double> quantizer, int topN = 10) { // Load OMFDistribution from file Dictionary <Tuple <int, int>, List <double> > OMFDistributionByUserItem; if (File.Exists(GetDataFileName("PrefOMF_"))) { OMFDistributionByUserItem = Utils.IO <Dictionary <Tuple <int, int>, List <double> > > .LoadObject(GetDataFileName("PrefOMF_")); } else { return("Abort, Run OMF first."); } if (!ReadyForOrdinal) { GetReadyForOrdinal(); } StringBuilder log = new StringBuilder(); log.AppendLine(Utils.PrintHeading("PrefMRF: PrefNMF based ORF")); // Prediction Utils.StartTimer(); DataMatrix R_predicted_expectations; DataMatrix R_predicted_mostlikely; // Convert PR_train into user-wise preferences DataMatrix R_train_positions = new DataMatrix(PR_train.GetPositionMatrix()); R_train_positions.Quantization(quantizer[0], quantizer[quantizer.Count - 1] - quantizer[0], quantizer); ORF orf = new ORF(); orf.PredictRatings(R_train_positions, R_unknown, StrongSimilarityIndicatorsByItemPref, OMFDistributionByUserItem, regularization, learnRate, maxEpoch, quantizer.Count, out R_predicted_expectations, out R_predicted_mostlikely); log.AppendLine(Utils.StopTimer()); // Evaluation var topNItemsByUser_expectations = ItemRecommendationCore.GetTopNItemsByUser(R_predicted_expectations, topN); for (int n = 1; n <= topN; n++) { log.AppendLine(Utils.PrintValue("NCDG@" + n, NCDG.Evaluate(RelevantItemsByUser, topNItemsByUser_expectations, n).ToString("0.0000"))); } for (int n = 1; n <= topN; n++) { log.AppendLine(Utils.PrintValue("MAP@" + n, MAP.Evaluate(RelevantItemsByUser, topNItemsByUser_expectations, n).ToString("0.0000"))); } return(log.ToString()); }
public string RunNMFbasedORF(double regularization, double learnRate, int maxEpoch, List <double> quantizer, int topN = 0) { // Load OMFDistribution from file Dictionary <Tuple <int, int>, List <double> > OMFDistributionByUserItem; if (File.Exists(GetDataFileName("RatingOMF_"))) { OMFDistributionByUserItem = Utils.IO <Dictionary <Tuple <int, int>, List <double> > > .LoadObject(GetDataFileName("RatingOMF_")); } else { return("Abort, Run OMF first."); } if (!ReadyForNumerical) { GetReadyForNumerical(); } StringBuilder log = new StringBuilder(); log.AppendLine(Utils.PrintHeading("NMF based ORF")); // Prediction Utils.StartTimer(); DataMatrix R_predicted_expectations; DataMatrix R_predicted_mostlikely; ORF orf = new ORF(); orf.PredictRatings(R_train, R_unknown, StrongSimilarityIndicatorsByItemRating, OMFDistributionByUserItem, regularization, learnRate, maxEpoch, quantizer.Count, out R_predicted_expectations, out R_predicted_mostlikely); log.AppendLine(Utils.StopTimer()); // Numerical Evaluation log.AppendLine(Utils.PrintValue("RMSE", RMSE.Evaluate(R_test, R_predicted_expectations).ToString("0.0000"))); log.AppendLine(Utils.PrintValue("MAE", RMSE.Evaluate(R_test, R_predicted_mostlikely).ToString("0.0000"))); // Top-N Evaluation if (topN != 0) { var topNItemsByUser_expectations = ItemRecommendationCore.GetTopNItemsByUser(R_predicted_expectations, topN); for (int n = 1; n <= topN; n++) { log.AppendLine(Utils.PrintValue("NCDG@" + n, NCDG.Evaluate(RelevantItemsByUser, topNItemsByUser_expectations, n).ToString("0.0000"))); } for (int n = 1; n <= topN; n++) { log.AppendLine(Utils.PrintValue("MAP@" + n, MAP.Evaluate(RelevantItemsByUser, topNItemsByUser_expectations, n).ToString("0.0000"))); } } return(log.ToString()); }
/// <summary> /// LoadORFButton Click event handler /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void LoadORFButton_Click(object sender, RoutedEventArgs e) { // extensions setting extensions = "Fasta files|*.fa;*.fas;*.fasta"; // openFileDialog method initialization initializeOpenFileDialog(extensions); // show openFileDialog file dialog Nullable <bool> openResult = openFileDialog.ShowDialog(); if (openResult == true) { //new ORF object ORF = new ORF(); file_seq = openFileDialog.FileName; // file handler // sequenceParser method initialization var tupleTemp = SeqParser.sequenceParser(file_seq); if (tupleTemp.Item2 != 1) { string message = "Something went wrong. Probably you tried to use an improper file. Try again. \nFor more information about using Codon Context Ranking check the \"How to use\" page."; ModernDialog.ShowMessage(message.ToString(), "Warning", MessageBoxButton.OK); } else { ORF.orfSeq = tupleTemp.Item1; ORF.aminoORFseq = SeqParser.codonToAminoParser(ORF.orfSeq); CalculateAndDisplayORF(ORF.orfSeq, ORF.aminoORFseq); // Enabling checkboxes and button MaximalizeRadioButton.IsEnabled = true; MinimalizeRadioButton.IsEnabled = true; OptimizeORFButton.IsEnabled = true; } } else { // modern dialog initialization string message = "Something went wrong. Probably you tried to use an improper file. Try again. \nFor more information about using Optimalizator check the \"How to use\" page."; ModernDialog.ShowMessage(message.ToString(), "Warning", MessageBoxButton.OK); } }