Esempio n. 1
0
        public virtual void TestPerStateBestSequenceFinder()
        {
            KBestSequenceFinder bsf = new KBestSequenceFinder();

            BestSequenceFinderTest.ITestSequenceModel tsm2nr = new BestSequenceFinderTest.TestSequenceModel2nr();
            RunSequencesFinder(tsm2nr, bsf);
            BestSequenceFinderTest.RunPossibleValuesChecker(tsm2nr, bsf);
        }
Esempio n. 2
0
        public static void RunSequencesFinder(BestSequenceFinderTest.ITestSequenceModel tsm, KBestSequenceFinder sf)
        {
            ICounter <int[]>    bestLabelsCounter = sf.KBestSequences(tsm, K2nr);
            IList <int[]>       topValues         = Counters.ToSortedList(bestLabelsCounter);
            IEnumerator <int[]> iter = topValues.GetEnumerator();

            for (int i = 0; i < K2nr; i++)
            {
                int[]  sequence    = iter.Current;
                string strSequence = Arrays.ToString(sequence);
                double score       = bestLabelsCounter.GetCount(sequence);
                // Deal with ties in the scoring ... only tied pairs handled.
                bool found = false;
                if (strSequence.Equals(test2nrAnswers[i]))
                {
                    found = true;
                }
                else
                {
                    if (i > 0 && Math.Abs(score - test2nrScores[i - 1]) < 1e-8 && strSequence.Equals(test2nrAnswers[i - 1]))
                    {
                        found = true;
                    }
                    else
                    {
                        if (i + 1 < test2nrScores.Length && Math.Abs(score - test2nrScores[i + 1]) < 1e-8 && strSequence.Equals(test2nrAnswers[i + 1]))
                        {
                            found = true;
                        }
                    }
                }
                NUnit.Framework.Assert.IsTrue("Best sequence is wrong. Correct: " + test2nrAnswers[i] + ", found: " + strSequence, found);
                NUnit.Framework.Assert.AreEqual("Best sequence score is wrong.", test2nrScores[i], score, 1e-8);
            }
        }