Example #1
0
    def test_good_rules():
        jake = Jacobs()
        jake.segment_combiner(method="cost")

        for id in subcosts:
            d_corpus = DCorpus(
                corpus_str=TestConstant.PARNCUTT_HUMAN_FRAGMENT[id])
            jake.load_corpus(d_corpus=d_corpus)
            if id == 'B':
                suggestions, costs, details = jake.generate_advice(
                    staff="upper", cycle=4, k=20)
            else:
                suggestions, costs, details = jake.generate_advice(
                    staff="upper", last_digit=last_digit[id], k=30)
            details_for_sugg = dict()
            for i in range(len(details)):
                details_for_sugg[suggestions[i]] = details[i][
                    0]  # 0 index because we only have one segment

            jake.report_on_advice(suggestions, costs, details)
            for gold_sugg in subcosts[id]:
                assert gold_sugg in details_for_sugg, \
                    "Missing suggestion {0} in {1}".format(gold_sugg, id)
                for rule in subcosts[id][gold_sugg]:
                    if rule == '345':
                        continue
                    gold_cost = subcosts[id][gold_sugg][rule]
                    cost = details_for_sugg[gold_sugg][rule]
                    assert cost == gold_cost, \
                        "Bad {0} cost for {1} in {2}: {3} should be {4}".format(rule, gold_sugg, id, cost, gold_cost)
Example #2
0
 def test_cycles():
     jake = Jacobs()
     jake.segment_combiner(method="cost")
     d_corpus = DCorpus(corpus_str=TestConstant.FOUR_NOTES)
     jake.load_corpus(d_corpus=d_corpus)
     suggestions, costs, details = jake.generate_advice(staff="upper",
                                                        cycle=4,
                                                        k=2)
     assert len(suggestions) == 2, "No loops in that dog in top ten"
     # jake.report_on_advice(suggestions, costs, details)
     d_corpus = DCorpus(
         corpus_str=TestConstant.PARNCUTT_HUMAN_FRAGMENT['B'])
     jake.load_corpus(d_corpus=d_corpus)
     suggestions, costs, details = jake.generate_advice(staff="upper",
                                                        cycle=4,
                                                        k=16)
     assert len(suggestions) == 16, "There should be 16 cyclic fingerings!"
Example #3
0
 def test_fingering_counts():
     jake = Jacobs(pruning_method="none")
     jake.segment_combiner(method="cost")
     d_corpus = DCorpus(corpus_str=TestConstant.FOUR_NOTES)
     jake.load_corpus(d_corpus=d_corpus)
     suggestions, costs, details = jake.generate_advice(staff="upper", k=2)
     assert jake.last_segment_pruned_count(
     ) == 320, "Bad none pruning on open-ended problem"
Example #4
0
 def test_four_note_example(self):
     jacobs = Jacobs(segmenter=ManualDSegmenter(), segment_combiner="cost")
     d_corpus = DCorpus(corpus_str=TestConstant.FOUR_NOTES)
     jacobs.load_corpus(d_corpus=d_corpus)
     suggestions, costs, details = jacobs.generate_advice(staff="upper",
                                                          k=2)
     self.assertEqual(len(suggestions), 2,
                      "No loops in that dog in top ten")