RichardYang40148 / mgeval

A toolbox for objective evaluation in symbolic music generation.
88 stars 31 forks source link

TypeError: list indices must be integers or slices, not str #2

Closed cristianmtr closed 5 years ago

cristianmtr commented 5 years ago
TypeError                                 Traceback (most recent call last)
<ipython-input-4-c103c66ba60e> in <module>()
     11 
     12     for j, metric in enumerate(metrics_list):
---> 13         set1_eval[metrics_list[j]][i] = getattr(core.metrics(), metrics_list[j])(feature)

D:\data\mgeval2\mgeval\core.py in avg_pitch_shift(self, feature, track_num)
    285         pattern.make_ticks_abs()
    286         resolution = pattern.resolution
--> 287         total_used_note = self.total_used_note(pattern, track_num=track_num)
    288         d_note = np.zeros((total_used_note - 1))
    289         current_note = 0

D:\data\mgeval2\mgeval\core.py in total_used_note(self, feature, track_num)
    109         'used_notes': a scalar for each sample.
    110         """
--> 111         pattern = feature['midi_pattern']
    112         used_notes = 0
    113         for i in range(0, len(pattern[track_num])):

C:\Anaconda3\envs\python2\lib\site-packages\midi\containers.pyc in __getitem__(self, item)
     28                             tracks=(super(Pattern, self).__getitem__(i) for i in xrange(*indices)))
     29         else:
---> 30             return super(Pattern, self).__getitem__(item)
     31 
     32     def __getslice__(self, i, j):

TypeError: list indices must be integers, not str
RichardYang40148 commented 5 years ago

Hi, thanks for your interest in MGEval. Can you please provide your midi sample that's having this error? Thanks

peiherng97 commented 5 years ago

-> 287 total_used_note = self.total_used_note(pattern, track_num=track_num) replace the "pattern" with "feature". I think that will solve the issue. Same thing happened to me as well.

RichardYang40148 commented 5 years ago

@peiherng97 thanks for the notice!