def dataset(data_dir): r""" Given a directory filled with data files, create a corresponding dataset. """ data = SupervisedDataSet(NUMBER_INPUTS, SUPPORTED_FRETS) for piece in os.listdir(data_dir): LOG.info('Adding samples from piece: {p}'.format(p=piece)) full_path = os.path.join(data_dir, piece) tracks = read_standard_tracks(full_path) for track in tracks: limiting_notes_generator = limiting_notes(track) try: next_limitation = limiting_notes_generator.next() except StopIteration: next_limitation = None for context in chord_contexts(track): context = (context[0], context[1], context[2], # **physical** successors! context[3], context[4], next_limitation) LOG.debug('Chord context: {c}'.format(c=context)) chord_entry = context[1] # sample data yields once for each note in chord! for (inputs, outputs) in _sample_data(*context): data.addSample(inputs, outputs) while next_limitation and next_limitation[1] <= chord_entry: try: next_limitation = limiting_notes_generator.next() except StopIteration: next_limitation = None return data
def test_tracks_one_nonstandard(self, mock_read_related_string_lines): related_lines = [['E|-----------|----------|', 'B|-----------|----------|', 'G|-----------|----------|', 'D|-----------|----------|', 'A|--9---10---|---5---7--|', 'E|-----------|----------|', 'E|---------|----------|', 'B|---------|----------|', 'G|---------|----------|', 'D|---------|----------|', 'A|--7--2---|--3---5---|', 'E|---------|----------|'], ['E|-----------|-----------|', 'B|-----------|-----------|', 'G|--2--4--6--|--9--8--7--|', 'D|-----------|-----------|', 'E|-----------|-----------|', 'B|-----------|-----------|', 'G|--2--4--6--|--9--8--7--|', 'D|-----------|-----------|'], ['E|-----------|----------|', 'B|-----------|----------|', 'G|-----------|----------|', 'D|-----------|----------|', 'A|--9---10---|---5---7--|', 'E|-----------|----------|'] ] mock_read_related_string_lines.return_value = related_lines track1 = ['E|-----------|----------|---------|----------|', 'B|-----------|----------|---------|----------|', 'G|-----------|----------|---------|----------|', 'D|-----------|----------|---------|----------|', 'A|--9---10---|---5---7--|--7--2---|--3---5---|', 'E|-----------|----------|---------|----------|'] track3 = ['E|-----------|----------|', 'B|-----------|----------|', 'G|-----------|----------|', 'D|-----------|----------|', 'A|--9---10---|---5---7--|', 'E|-----------|----------|'] expected = [track1, track3] self.assertEqual(parse.read_standard_tracks(''), expected)
def test_no_related_lines(self, mock_read_related_string_lines): related_lines = [] mock_read_related_string_lines.return_value = [] expected = [] self.assertEqual(parse.read_standard_tracks(''), expected)