Ignore:
Timestamp:
Mar 5, 2006, 4:21:16 AM (19 years ago)
Author:
Paul Brossier <piem@altern.org>
Branches:
feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/pydocstrings, feature/timestretch, fix/ffmpeg5, master, pitchshift, sampler, timestretch, yinfft+
Children:
d8604ac
Parents:
43938de
Message:

updated to new bench-pitch, fixed gettruth
updated to new bench-pitch, fixed gettruth

File:
1 edited

Legend:

Unmodified
Added
Removed
  • python/test/bench/pitch/bench-pitch

    r43938de r5d1c070  
    99        valuenames = ['mode']
    1010        """ list of lists to store per file """
    11         valuelists = ['orig', 'mean', 'med']
     11        valuelists = ['truth', 'osil', 'esil', 'opit', 'epit', 'echr',
     12               'Msil', 'Mpit', 'Mchr']
    1213        """ list of values to print per dir """
    13         printnames = [ 'mode']
     14        printnames = [ 'mode', 'truth', 'Msil', 'Mpit', 'Mchr']
    1415
    1516        """ per dir """
    16         formats = {'mode': "%12s" , 'thres': "%5.4s",
    17                 'dist':  "%5.4s", 'prec': "%5.4s", 'recl':  "%5.4s",
    18                 'Ttrue': "%5.4s", 'Tfp':   "%5.4s", 'Tfn':   "%5.4s",
    19                 'Tm':    "%5.4s", 'Td':    "%5.4s",
    20                 'aTtrue':"%5.4s", 'aTfp':  "%5.4s", 'aTfn':  "%5.4s",
    21                 'aTm':   "%5.4s", 'aTd':   "%5.4s",
    22                 'mean':  "%5.40s", 'smean': "%5.40s",
    23                 'amean':  "%5.40s", 'samean': "%5.40s"}
     17        formats = {'mode': "%12s" ,
     18                'truth': "%s",
     19                'osil': "%s", 'esil': "%s",
     20                'opit': "%s", 'epit': "%s", 'echr': "%s",
     21                'Msil': "%s", 'Mpit': "%s", 'Mchr': "%s"}
    2422
    2523        def dir_eval(self):
    2624                """ evaluate statistical data over the directory """
    2725                v = self.v
    28 
    2926                v['mode']      = self.params.pitchmode
    3027
     
    3229                filetask = self.task(input,params=self.params)
    3330                computed_data = filetask.compute_all()
    34                 orig,mean,med = filetask.eval(computed_data)
     31                osil, esil, opit, epit, echr = filetask.eval(computed_data)
     32                self.v['truth'].append(int(filetask.truth))
     33                assert opit > 0
    3534               
    36                 self.v['orig'].append(orig)
    37                 self.v['mean'].append(mean)
    38                 self.v['med'].append(med)
     35                self.v['osil'].append(osil)
     36                self.v['esil'].append(esil)
     37                self.v['opit'].append(opit)
     38                self.v['epit'].append(epit)
     39                self.v['echr'].append(echr)
     40
     41                self.v['Msil'].append(esil/float(osil)*100.)
     42                self.v['Mpit'].append(epit/float(opit)*100.)
     43                self.v['Mchr'].append(echr/float(opit)*100.)
    3944                #print results#, computed_data
    4045                #print input, results, results - float(input.split('.')[-2])
     
    4247        def run_bench(self,modes=['schmitt']):
    4348                from os.path import basename
    44                 d = []
    4549                self.modes = modes
    4650                self.pretty_titles()
     51                d = []
    4752                for mode in self.modes:
    4853                        self.params.pitchmode = mode
    4954                        self.dir_eval_print()
    50                         self.plotpitchtessiture(d,
    51                                 self.v['orig'],
    52                                 self.v['med'],
    53                                 plottitle=self.v['mode'],
    54                                 plotmode='points')
    55                 #d.append('beta = .25,orig(x) title \"-2 octave\"')
    56                 d.append('beta = .50,orig(x) title \"-1 octave\"')
    57                 d.append('beta = 1.0,orig(x) title \"original\"')
    58                 d.append('beta = 2.0,orig(x) title \"+1 octave\"')
    59                 title = basename(self.datadir)
     55                        truth   = [i for i in range(min(self.v['truth']),max(self.v['truth'])+1)]
     56                        allOsil = [0 for i in range(min(self.v['truth']),max(self.v['truth'])+1)]
     57                        allEsil = [0 for i in range(min(self.v['truth']),max(self.v['truth'])+1)]
     58                        allOpit = [0 for i in range(min(self.v['truth']),max(self.v['truth'])+1)]
     59                        allEpit = [0 for i in range(min(self.v['truth']),max(self.v['truth'])+1)]
     60                        allEchr = [0 for i in range(min(self.v['truth']),max(self.v['truth'])+1)]
     61                        allMsil = [0 for i in range(min(self.v['truth']),max(self.v['truth'])+1)]
     62                        allMpit = [0 for i in range(min(self.v['truth']),max(self.v['truth'])+1)]
     63                        allMchr = [0 for i in range(min(self.v['truth']),max(self.v['truth'])+1)]
     64                        for i in range(len(self.v['truth'])):
     65                                allOsil[self.v['truth'][i]-min(self.v['truth'])] += self.v['osil'][i]
     66                                allEsil[self.v['truth'][i]-min(self.v['truth'])] += self.v['esil'][i]
     67                                allOpit[self.v['truth'][i]-min(self.v['truth'])] += self.v['opit'][i]
     68                                allEpit[self.v['truth'][i]-min(self.v['truth'])] += self.v['epit'][i]
     69                                allEchr[self.v['truth'][i]-min(self.v['truth'])] += self.v['echr'][i]
     70                        for i in range(len(truth)):
     71                                allMsil[i] = allEsil[i]/float(allOsil[i])*100.
     72                                allMpit[i] = allEpit[i]/float(allOpit[i])*100.
     73                                allMchr[i] = allEchr[i]/float(allOpit[i])*100.
     74
     75                        plot = []
     76                        self.plotpitchtessiture(plot,
     77                                truth,
     78                                allMpit,
     79                                plottitle="%s %s" % (self.v['mode'],self.params.bufsize),
     80                                plotmode='lines')
     81                        self.plotpitchtessiture(plot,
     82                                truth,
     83                                allMchr,
     84                                plottitle="%s %s" % (self.v['mode'],"%12"),
     85                                plotmode='lines')
     86                        """
     87                        self.plotpitchtessiture(plot,
     88                                truth,
     89                                allMsil,
     90                                plottitle="%s %s" % (self.v['mode'],"sil"),
     91                                plotmode='lines')
     92                        """
     93                        title = basename(self.datadir)
     94                        d.append(plot)
    6095                outplot = "_-_".join(('pitchtessiture',title))
     96                self.xmin = 20. #min(self.v['truth'])
     97                self.xmax = 110. #max(self.v['truth'])
    6198                for ext in ('ps','png','svg',''):
    6299                        self.plotplotpitchtessiture(d,
    63                                 plottitle=title,
     100                                plottitle="".join(['Performance against MIDI Note number (',
     101                                        title,
     102                                        ", %s" % len(self.sndlist), " samples)"]),
    64103                                outplot=outplot,
    65104                                extension=ext)
     105                #d.append('beta = .25,orig(x) title \"-2 octave\"')
     106                #d.append('beta = .50,orig(x) title \"-1 octave\"')
     107                #d.append('beta = 1.0,orig(x) title \"original\"')
     108                #d.append('beta = 2.0,orig(x) title \"+1 octave\"')
    66109
    67110        """
     
    73116                d.append(Gnuplot.Data(lx, ly, with=plotmode, title="%s" % (plottitle) ))
    74117
    75         def plotplotpitchtessiture(self,d,plottitle='',outplot=0,extension=''):
     118        def plotplotpitchtessiture(self,d,plottitle='',outplot=0,extension='',multiplot=1):
    76119                from aubio.gnuplot import gnuplot_create
    77120                g = gnuplot_create(outplot=outplot,extension=extension)
    78                 g.title(plottitle)
    79                 g('orig(x) = beta*x')
    80                 g.xlabel('original pitch (Hz)')
    81                 g.ylabel('detected pitch (Hz)')
    82                 g('set key left top')
    83                 g('set log xy')
    84                 g('set xrange [50:2000]')
    85                 g('set yrange [50:2000]')
    86                 g.plot(*d)
     121                #g.title(plottitle)
     122                #g('orig(x) = beta*x')
     123                #g.xlabel('original pitch (Hz)')
     124                #g.ylabel('detected pitch (Hz)')
     125                #g('set key left top')
     126                #g('set log xy')
     127                #g('set xrange [50:2000]')
     128                g('set yrange [0:100]')
     129                #g.plot(*d)
     130                if multiplot:
     131                        g('set multiplot')
     132                        for i in range(len(d)):
     133                                # plot onset detection functions
     134                                g('set size   1,%f' % ( 1.0/float(len(d)) ) )
     135                                g('set origin 0,%f' % ( 1.0*float(len(d)-i-1)/float(len(d)) ) )
     136                                # erase axis
     137                                g('set border 3')
     138                                g('set xtics nomirror')
     139                                g('set ytics nomirror')
     140                                g('set key left top')
     141                                g('set xrange [%f:%f]' % (self.xmin,self.xmax)) #(self.xmax - (self.xmax-self.xmin)*5./4.,self.xmax))
     142                                #g.ylabel('%Correct detections')
     143                                if i == len(d)-1:
     144                                        g.xlabel(plottitle)
     145                                g.plot(*d[i])
     146                                g('unset title')
     147                        g('unset multiplot')
     148                else:
     149                        g.plot(*d)
    87150
    88151
     
    94157                for each in sys.argv[3:-1]: print each
    95158        modes = ['schmitt', 'yin', 'mcomb', 'fcomb']
    96         #modes = ['fcomb']
     159        modes = ['schmitt', 'yin', 'fcomb']
    97160
    98161        params = taskparams()
    99         params.bufsize = 4096
    100         params.hopsize = params.bufsize/4
    101         params.silence = -1000.
    102         params.pitchsmooth = 50
     162        params.bufsize = 2048
     163        params.hopsize = params.bufsize/8
     164        params.silence = -60.
     165        params.pitchsmooth = 0
     166        params.pitchmax = 20000
     167        params.pitchmin = 20
    103168        benchpitch = benchpitch(datapath,params=params)
    104169        benchpitch.task = taskpitch
Note: See TracChangeset for help on using the changeset viewer.