Daniel@0: # Part of DML (Digital Music Laboratory) Daniel@0: # Copyright 2014-2015 Samer Abdallah, University College London Daniel@0: Daniel@0: # This program is free software; you can redistribute it and/or Daniel@0: # modify it under the terms of the GNU General Public License Daniel@0: # as published by the Free Software Foundation; either version 2 Daniel@0: # of the License, or (at your option) any later version. Daniel@0: # Daniel@0: # This program is distributed in the hope that it will be useful, Daniel@0: # but WITHOUT ANY WARRANTY; without even the implied warranty of Daniel@0: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Daniel@0: # GNU General Public License for more details. Daniel@0: # Daniel@0: # You should have received a copy of the GNU General Public Daniel@0: # License along with this library; if not, write to the Free Software Daniel@0: # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Daniel@0: Daniel@0: import sys,traceback Daniel@0: Daniel@0: def for_each(items,f): Daniel@0: bad=[] Daniel@0: num_ok=0 Daniel@0: Daniel@0: for x in items: Daniel@0: try: f(x); num_ok+=1 Daniel@0: except Exception as ex: Daniel@0: bad.append({'item':x, 'error':str(ex)}) Daniel@0: Daniel@0: # printing exception info Daniel@0: #traceback.print_exc() Daniel@0: Daniel@0: return {'ok_count':num_ok, 'failures':bad} Daniel@0: Daniel@0: def discrete_hist(domain,counts): return {'domain':domain, 'counts':counts} Daniel@0: def continuous_hist(edges,counts): return {'edges':edges,'counts':counts} Daniel@0: def decode_tagged(parser_table, v): return parser_table[v['tag']](v['value']) Daniel@0: def print_status(msg): sys.stderr.write(msg+'\n')