updated aubiocompare-onset and onsetcompare.py
authorPaul Brossier <piem@altern.org>
Tue, 29 Mar 2005 15:46:05 +0000 (15:46 +0000)
committerPaul Brossier <piem@altern.org>
Tue, 29 Mar 2005 15:46:05 +0000 (15:46 +0000)
python/aubio/onsetcompare.py
python/aubiocompare-onset

index f6ee9fb0aa02e612e9064045bfe1ff92972491b8..e15c01c01028db446211979fa9c821a0245ffe73 100644 (file)
@@ -53,6 +53,12 @@ def onset_roc(la, lb, eps):
             bad += 1
     ok    = n - missed
     hits  = m - bad
+    # at this point, we must have ok = hits. if not we had
+    #   - a case were one onset counted for two labels (ok>hits)
+    #   - a case were one labels matched two onsets (hits>ok)
+    # bad hack for now (fails if both above cases have happened):
+    if ok > hits: bad += ok-hits; ok = hits
+    if hits > ok: missed += hits-ok; hits = ok
     total = n
     return ok,bad,missed,total,hits
     
index 1d2fe229b4b90f819a3534169ba429689f40462d..3b24a5a0c0e64267101e1a47b0437e6f8fe19ea6 100755 (executable)
@@ -60,7 +60,8 @@ from aubio.txtfile import read_datafile
 # default values
 fileo=None;filec=None;vmode=None;dmode=None;delay=0.
 # default tolerance is 50 ms
-tol = 0.050
+#tol = 0.050
+tol = 0.048
 
 while len(sys.argv) >=2:
     option = sys.argv[1]; del sys.argv[1]
@@ -70,6 +71,7 @@ while len(sys.argv) >=2:
     if option == '-v': vmode = 'verbose'
     if option == '-d': dmode = 'debug'
     if option == '-D': delay = float(sys.argv[1]); del sys.argv[1] 
+    if option == '-tol': tol = float(sys.argv[1]); del sys.argv[1] 
 
 # arguments required
 if (not fileo) or (not filec):
@@ -80,8 +82,9 @@ if (not fileo) or (not filec):
 ltru, lres = read_datafile(fileo,depth=0),read_datafile(filec,depth=0)
 
 # delay onsets as required with -D
-for i in range(len(lres)):
-    lres[i] = lres[i] + delay
+if delay:
+    for i in range(len(lres)):
+        lres[i] = lres[i] + delay
 # compute errors types
 ok, bad, missed, total, hits = onset_roc(ltru,lres,tol)