예제 #1
0
 def test_run_1(self):
     # properly deals with "intervals" experiment
     # also tests that the user can pass a custom string to the continuer setting
     mock_path = u'vis.workflow.WorkflowManager._intervs'
     with mock.patch(mock_path) as mock_meth:
         mock_meth.return_value = u'the final countdown'
         test_wc = WorkflowManager([])
         test_wc._loaded = True
         test_wc.settings(None, 'continuer', 'Unisonus')
         test_wc.run(u'intervals')
         mock_meth.assert_called_once_with()
         self.assertEqual(mock_meth.return_value, test_wc._result)
         self.assertEqual(u'intervals', test_wc._previous_exp)
         self.assertEqual('Unisonus', test_wc.settings(None, 'continuer'))
예제 #2
0
 def test_run_2b(self):
     # same as 2a but 'interval quality' is set to False
     mock_path = u'vis.workflow.WorkflowManager._interval_ngrams'
     with mock.patch(mock_path) as mock_meth:
         mock_meth.return_value = u'the final countdown'
         test_wc = WorkflowManager([])
         test_wc._loaded = True
         test_wc.settings(None, 'interval quality', False)
         def the_side_effect():
             assert '1' == test_wc.settings(None, 'continuer')
             return mock.DEFAULT
         mock_meth.side_effect = the_side_effect
         test_wc.run(u'interval n-grams')
         mock_meth.assert_called_once_with()
         self.assertEqual(mock_meth.return_value, test_wc._result)
         self.assertEqual(u'interval n-grams', test_wc._previous_exp)
         self.assertEqual('dynamic quality', test_wc.settings(None, 'continuer'))
예제 #3
0
 def test_run_2a(self):
     # properly deals with "interval n-grams" experiment
     # checks that the continuer returns to 'dynamic quality' after runtime when
     # interval quality was set to True
     mock_path = u'vis.workflow.WorkflowManager._interval_ngrams'
     with mock.patch(mock_path) as mock_meth:
         mock_meth.return_value = u'the final countdown'
         test_wc = WorkflowManager([])
         test_wc._loaded = True
         test_wc.settings(None, 'interval quality', True)
         def the_side_effect():
             assert 'P1' == test_wc.settings(None, 'continuer')
             return mock.DEFAULT
         mock_meth.side_effect = the_side_effect
         test_wc.run(u'interval n-grams')
         mock_meth.assert_called_once_with()
         self.assertEqual(mock_meth.return_value, test_wc._result)
         self.assertEqual(u'interval n-grams', test_wc._previous_exp)
         self.assertEqual('dynamic quality', test_wc.settings(None, 'continuer'))
예제 #4
0
 def test_intervals_2(self):
     # test all combinations of bwv77
     test_wm = WorkflowManager(['vis/tests/corpus/bwv77.mxl'])
     test_wm.load('pieces')
     test_wm.settings(0, 'voice combinations', 'all pairs')
     actual = test_wm.run('intervals')
     exp_ind = list(IntervalsTests.EXPECTED_2.index)
     act_ind = list(actual.index)
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
     for ind_item in exp_ind:
         self.assertEqual(IntervalsTests.EXPECTED_2[ind_item], actual[ind_item])
예제 #5
0
 def test_ngrams_8(self):
     # test_ngrams_7 *but* with part combinations specified rather than 'all pairs'
     test_wm = WorkflowManager(['vis/tests/corpus/vis_Test_Piece.xml'])
     test_wm.load('pieces')
     test_wm.settings(0, 'voice combinations', '[[0,1], [0,2], [0,3], [1,2], [1,3], [2,3]]')
     test_wm.settings(0, 'n', 2)
     actual = test_wm.run('interval n-grams')
     exp_ind = list(NGramsTests.EXPECTED_7.index)  # yes, this *should* be EXPECTED_7
     act_ind = list(actual.index)
     self.assertEqual(len(exp_ind), len(act_ind))
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
         self.assertEqual(NGramsTests.EXPECTED_7[ind_item], actual[ind_item])
예제 #6
0
 def test_ngrams_7(self):
     # test all two-part combinations of the test piece; 2-grams
     test_wm = WorkflowManager(['vis/tests/corpus/vis_Test_Piece.xml'])
     test_wm.load('pieces')
     test_wm.settings(0, 'voice combinations', 'all pairs')
     test_wm.settings(0, 'n', 2)
     actual = test_wm.run('interval n-grams')
     exp_ind = list(NGramsTests.EXPECTED_7.index)
     act_ind = list(actual.index)
     self.assertEqual(len(exp_ind), len(act_ind))
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
         self.assertEqual(NGramsTests.EXPECTED_7[ind_item], actual[ind_item])
예제 #7
0
 def test_ngrams_6(self):
     # test madrigal51 with all-voice 2-grams and rests
     test_wm = WorkflowManager(['vis/tests/corpus/madrigal51.mxl'])
     test_wm.settings(0, 'voice combinations', 'all')
     test_wm.settings(None, 'include rests', True)
     test_wm.load('pieces')
     actual = test_wm.run('interval n-grams')
     exp_ind = list(NGramsTests.EXPECTED_6.index)
     act_ind = list(actual.index)
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
     for ind_item in exp_ind:
         self.assertEqual(NGramsTests.EXPECTED_6[ind_item], actual[ind_item])
예제 #8
0
 def test_ngrams_3(self):
     # test all voices of bwv77; 1-grams
     test_wm = WorkflowManager(['vis/tests/corpus/bwv77.mxl'])
     test_wm.load('pieces')
     test_wm.settings(0, 'voice combinations', 'all')
     test_wm.settings(0, 'n', 1)
     actual = test_wm.run('interval n-grams')
     exp_ind = list(NGramsTests.EXPECTED_3.index)
     act_ind = list(actual.index)
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
     for ind_item in exp_ind:
         self.assertEqual(NGramsTests.EXPECTED_3[ind_item], actual[ind_item])
예제 #9
0
 def test_intervals_3(self):
     # test all combinations of madrigal51 without rests
     test_wm = WorkflowManager(['vis/tests/corpus/madrigal51.mxl'])
     test_wm.load('pieces')
     test_wm.settings(0, 'voice combinations', 'all pairs')
     test_wm.settings(None, 'include rests', False)
     actual = test_wm.run('intervals')
     exp_ind = list(IntervalsTests.EXPECTED_3.index)
     act_ind = list(actual.index)
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
     for ind_item in exp_ind:
         self.assertEqual(IntervalsTests.EXPECTED_3[ind_item], actual[ind_item])
 def test_ngrams_2(self):
     # test all two-part combinations of bwv77; 5-grams
     test_wm = WorkflowManager(['vis/tests/corpus/bwv77.mxl'])
     test_wm.load('pieces')
     test_wm.settings(0, 'voice combinations', 'all pairs')
     test_wm.settings(0, 'n', 5)
     test_wm.settings(0, 'continuer', '_')
     actual = test_wm.run('interval n-grams')[:10]
     exp_ind = list(NGramsTests.EXPECTED_2.index)
     act_ind = list(actual.index)
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
     for ind_item in exp_ind:
         self.assertEqual(NGramsTests.EXPECTED_2[ind_item], actual[ind_item])
예제 #11
0
 def test_ngrams_4(self):
     # test all voices of bwv2; 3-grams; simple intervals
     test_wm = WorkflowManager(['vis/tests/corpus/bwv2.xml'])
     test_wm.load('pieces')
     test_wm.settings(0, 'voice combinations', 'all')
     test_wm.settings(0, 'n', 2)
     test_wm.settings(None, 'simple intervals', True)
     actual = test_wm.run('interval n-grams')[:10]
     exp_ind = list(NGramsTests.EXPECTED_4.index)
     act_ind = list(actual.index)
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
     for ind_item in exp_ind:
         self.assertEqual(NGramsTests.EXPECTED_4[ind_item], actual[ind_item])
 def test_ngrams_9c(self):
     # same as 9b but 'interval quality' is set to False (by default).
     test_wm = WorkflowManager(['vis/tests/corpus/Kyrie_short.krn'])
     test_wm.load()
     test_wm.settings(0, 'voice combinations', '[[1,3]]')
     test_wm.settings(0, 'n', 2)
     test_wm.settings(0, 'offset interval', 2.0)
     actual = test_wm.run('interval n-grams')
     exp_ind = list(NGramsTests.EXPECTED_9c.index)
     act_ind = list(actual.index)
     self.assertEqual(len(exp_ind), len(act_ind))
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
         self.assertEqual(NGramsTests.EXPECTED_9c[ind_item], actual[ind_item])
 def test_intervals_2(self):
     """test all combinations of bwv77"""
     test_wm = WorkflowManager([os.path.join(VIS_PATH, 'tests', 'corpus', 'bwv77.mxl')])
     test_wm.load('pieces')
     test_wm.settings(0, 'voice combinations', 'all pairs')
     actual = test_wm.run('intervals')
     self.assertEqual(1, len(actual.columns))
     actual = actual['aggregator.ColumnAggregator']
     exp_ind = list(IntervalsTests.EXPECTED_2.index)
     act_ind = list(actual.index)
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
     for ind_item in exp_ind:
         self.assertEqual(IntervalsTests.EXPECTED_2[ind_item], actual[ind_item])
 def test_ngrams_1(self):
     # test the two highest voices of bwv77; 2-grams
     test_wm = WorkflowManager(['vis/tests/corpus/bwv77.mxl'])
     test_wm.load('pieces')
     test_wm.settings(0, 'voice combinations', '[[0, 1]]')
     test_wm.settings(0, 'n', 2)
     test_wm.settings(0, 'continuer', '_')
     actual = test_wm.run('interval n-grams')
     exp_ind = list(NGramsTests.EXPECTED_1.index)
     act_ind = list(actual.index)
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
     for ind_item in exp_ind:
         self.assertEqual(NGramsTests.EXPECTED_1[ind_item], actual[ind_item])
 def test_intervals_3(self):
     """test all combinations of madrigal51 without rests"""
     test_wm = WorkflowManager([os.path.join(VIS_PATH, 'tests', 'corpus', 'madrigal51.mxl')])
     test_wm.load('pieces')
     test_wm.settings(0, 'voice combinations', 'all pairs')
     test_wm.settings(None, 'include rests', False)
     actual = test_wm.run('intervals')
     self.assertEqual(1, len(actual.columns))
     actual = actual['aggregator.ColumnAggregator']
     exp_ind = list(IntervalsTests.EXPECTED_3.index)
     act_ind = list(actual.index)
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
     for ind_item in exp_ind:
         self.assertEqual(IntervalsTests.EXPECTED_3[ind_item], actual[ind_item])
    def test_intervals_7(self):  # TODO: add a frequency-counted test
        """same as test_6 *but* no quality"""
        # NB: the "expected" was hand-counted
        expected = pandas.read_csv(os.path.join(VIS_PATH, 'tests', 'expecteds', 'bwv77', 'SA_intervals_nq.csv'),
                                   comment='#', index_col=0, header=[0, 1], quotechar="'", dtype='object')

        test_wm = WorkflowManager([os.path.join(VIS_PATH, 'tests', 'corpus', 'bwv77.mxl')])
        test_wm.load('pieces')
        test_wm.settings(0, 'voice combinations', '[[0, 1]]')
        test_wm.settings(None, 'count frequency', False)
        test_wm.settings(None, 'interval quality', False)
        actual = test_wm.run('intervals')

        self.assertEqual(1, len(actual))
        actual = actual[0].dropna()
        self.assertDataFramesEqual(expected, actual)
 def test_ngrams_9b(self):
     # same as 9a but tests functionality of 'dynamic quality setting of continuer
     # when 'interval quality' is set to True.
     test_wm = WorkflowManager(['vis/tests/corpus/Kyrie_short.krn'])
     test_wm.load()
     test_wm.settings(0, 'voice combinations', '[[1,3]]')
     test_wm.settings(0, 'n', 2)
     test_wm.settings(0, 'offset interval', 2.0)
     test_wm.settings(0, 'interval quality', True)
     actual = test_wm.run('interval n-grams')
     exp_ind = list(NGramsTests.EXPECTED_9b.index)
     act_ind = list(actual.index)
     self.assertEqual(len(exp_ind), len(act_ind))
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
         self.assertEqual(NGramsTests.EXPECTED_9b[ind_item], actual[ind_item])
예제 #18
0
 def test_intervals_2(self):
     """test all combinations of bwv77"""
     test_wm = WorkflowManager(
         [os.path.join(VIS_PATH, 'tests', 'corpus', 'bwv77.mxl')])
     test_wm.load('pieces')
     test_wm.settings(0, 'voice combinations', 'all pairs')
     actual = test_wm.run('intervals')
     self.assertEqual(1, len(actual.columns))
     actual = actual['aggregator.ColumnAggregator']
     exp_ind = list(IntervalsTests.EXPECTED_2.index)
     act_ind = list(actual.index)
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
     for ind_item in exp_ind:
         self.assertEqual(IntervalsTests.EXPECTED_2[ind_item],
                          actual[ind_item])
예제 #19
0
 def test_intervals_3(self):
     """test all combinations of madrigal51 without rests"""
     test_wm = WorkflowManager(
         [os.path.join(VIS_PATH, 'tests', 'corpus', 'madrigal51.mxl')])
     test_wm.load('pieces')
     test_wm.settings(0, 'voice combinations', 'all pairs')
     test_wm.settings(None, 'include rests', False)
     actual = test_wm.run('intervals')
     self.assertEqual(1, len(actual.columns))
     actual = actual['aggregator.ColumnAggregator']
     exp_ind = list(IntervalsTests.EXPECTED_3.index)
     act_ind = list(actual.index)
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
     for ind_item in exp_ind:
         self.assertEqual(IntervalsTests.EXPECTED_3[ind_item],
                          actual[ind_item])
 def test_ngrams_9a(self):
     # test the calculation of horizontal intervals when the lower voice is sustained
     # longer than the offset interval. A custom string is passed for horizontal
     # unisons resulting from a sustained lower voice. Regression test for:
     # https://github.com/ELVIS-Project/vis/issues/305
     test_wm = WorkflowManager(['vis/tests/corpus/Kyrie_short.krn'])
     test_wm.load()
     test_wm.settings(0, 'voice combinations', '[[1,3]]')
     test_wm.settings(0, 'n', 2)
     test_wm.settings(0, 'offset interval', 2.0)
     test_wm.settings(0, 'continuer', 'zamboni')
     actual = test_wm.run('interval n-grams')
     exp_ind = list(NGramsTests.EXPECTED_9a.index)
     act_ind = list(actual.index)
     self.assertEqual(len(exp_ind), len(act_ind))
     for ind_item in exp_ind:
         self.assertTrue(ind_item in act_ind)
         self.assertEqual(NGramsTests.EXPECTED_9a[ind_item], actual[ind_item])
 def test_intervals_5(self):
     """test all combinations of vis_Test_Piece"""
     test_wm = WorkflowManager([os.path.join(VIS_PATH, 'tests', 'corpus', 'vis_Test_Piece.xml')])
     test_wm.load('pieces')
     test_wm.settings(0, 'voice combinations', 'all pairs')
     test_wm.settings(None, 'include rests', True)
     expected = pandas.read_csv(os.path.join(VIS_PATH, 'tests', 'corpus', 'test_intervals_5.csv'),
                                index_col=0)
     actual = test_wm.run('intervals')
     self.assertEqual(1, len(actual.columns))
     self.assertSequenceEqual(list(expected.columns), list(actual.columns))
     for col_name in expected.columns:
         self.assertEqual(len(expected[col_name]), len(actual[col_name]))
         for each_interval in expected[col_name].index:
             # NOTE: for whatever reason, the "expected" file always imports with an Int64Index,
             #       so .loc() won't find things properly unless we give the int64 index to the
             #       expected and the str index to the actual
             self.assertEqual(expected[col_name].loc[each_interval],
                              actual[col_name].loc[str(each_interval)])
예제 #22
0
    def test_intervals_6(self):  # TODO: add a frequency-counted test
        """test Soprano and Alto of bwv77; with quality; not counting frequency"""
        # NB: the "expected" was hand-counted
        expected = pandas.read_csv(os.path.join(VIS_PATH, 'tests', 'expecteds',
                                                'bwv77', 'SA_intervals.csv'),
                                   comment='#',
                                   index_col=0,
                                   header=[0, 1],
                                   quotechar="'")

        test_wm = WorkflowManager(
            [os.path.join(VIS_PATH, 'tests', 'corpus', 'bwv77.mxl')])
        test_wm.load('pieces')
        test_wm.settings(0, 'voice combinations', '[[0, 1]]')
        test_wm.settings(None, 'count frequency', False)
        test_wm.settings(None, 'interval quality', True)
        actual = test_wm.run('intervals')

        self.assertEqual(1, len(actual))
        actual = actual[0].dropna()
        self.assertDataFramesEqual(expected, actual)
예제 #23
0
 def test_intervals_5(self):
     """test all combinations of vis_Test_Piece"""
     test_wm = WorkflowManager(
         [os.path.join(VIS_PATH, 'tests', 'corpus', 'vis_Test_Piece.xml')])
     test_wm.load('pieces')
     test_wm.settings(0, 'voice combinations', 'all pairs')
     test_wm.settings(None, 'include rests', True)
     expected = pandas.read_csv(os.path.join(VIS_PATH, 'tests', 'corpus',
                                             'test_intervals_5.csv'),
                                index_col=0)
     actual = test_wm.run('intervals')
     self.assertEqual(1, len(actual.columns))
     self.assertSequenceEqual(list(expected.columns), list(actual.columns))
     for col_name in expected.columns:
         self.assertEqual(len(expected[col_name]), len(actual[col_name]))
         for each_interval in expected[col_name].index:
             # NOTE: for whatever reason, the "expected" file always imports with an Int64Index,
             #       so .loc() won't find things properly unless we give the int64 index to the
             #       expected and the str index to the actual
             self.assertEqual(expected[col_name].loc[each_interval],
                              actual[col_name].loc[str(each_interval)])